Part Number Hot Search : 
TB6551F 2N7002M AIB0618 TK10931V 05SH3 IRHM8250 MCP1810 AP6N2R0P
Product Description
Full Text Search
 

To Download EVAL-ADE5569F62EBZ Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
 Single-Phase Energy Measurement IC with 8052 MCU, RTC, and LCD Driver ADE5166/ADE5169/ADE5566/ADE5569
GENERAL FEATURES
Wide supply voltage operation: 2.4 V to 3.7 V Internal bipolar switch between regulated and battery inputs Ultralow power operation with power saving modes (PSM) Full operation: 4.4 mA to 1.6 mA (PLL clock dependent) Battery mode: 3.3 mA to 400 A (PLL clock dependent) Sleep mode Real-time clock (RTC) mode: 1.7 A RTC and LCD mode: 38 A (LCD charge pump enabled) Reference: 1.2 V 0.1% (10 ppm/C drift) 64-lead, low profile quad flat, RoHS-compliant package (LQFP) Operating temperature range: -40C to +85C
MICROPROCESSOR FEATURES
8052-based core Single-cycle 4 MIPS 8052 core 8052-compatible instruction set 32.768 kHz external crystal with on-chip PLL 2 external interrupt sources External reset pin Low power battery mode Wake-up from I/O, temperature change, alarm, and universal asynchronous receiver/transmitter (UART) LCD driver operation with automatic scrolling Temperature measurement Real-time clock (RTC) Counter for seconds, minutes, hours, days, months, and years Date counter, including leap year compensation Automatic battery switchover for RTC backup Operation down to 2.4 V Ultralow battery supply current: 1.7 A Selectable output frequency: 1 Hz to 16 kHz Embedded digital crystal frequency compensation for calibration and temperature variation of 2 ppm resolution Integrated LCD driver 108-segment driver for the ADE5566 and ADE5569 104-segment driver for the ADE5166 and ADE5169 2x, 3x, or 4x multiplexing 4 LCD memory banks for screen scrolling LCD voltages generated internally or with external resistors Internal adjustable drive voltages up to 5 V independent of power supply level On-chip peripherals 2 independent UART interfaces SPI or I2C Watchdog timer Power supply management with user-selectable levels Memory: 62 kB flash memory, 2.256 kB RAM Development tools Single-pin emulation IDE-based assembly and C source debugging
ENERGY MEASUREMENT FEATURES
Proprietary analog-to-digital converters (ADCs) and digital signal processing (DSP) provide high accuracy active (watt), reactive (var), and apparent energy (volt-ampere (VA)) measurement <0.1% error on active energy over a dynamic range of 1000 to 1 @ 25C <0.5% error on reactive energy over a dynamic range of 1000 to 1 @ 25C (ADE5169 and ADE5569 only) <0.5% error on root mean square (rms) measurements over a dynamic range of 500 to 1 for current (Irms) and 100 to 1 for voltage (Vrms) @ 25C Supports IEC 62053-21; IEC 62053-22; IEC 62053-23; EN 50470-3 Class A, Class B, and Class C; and ANSI C12-16 Differential input with programmable gain amplifiers (PGAs) supports shunts, current transformers, and di/dt current sensors (ADE5169 and ADE5569 only) 2 current inputs for antitamper detection in the ADE5166/ ADE5169 High frequency outputs proportional to Irms, active, reactive, or apparent power (AP)
Table 1. Features Available on Each Part
Part No. ADE5166 ADE5169 ADE5566 ADE5569 Antitamper Yes Yes No No Watt, VA, Irms, Vrms Yes Yes Yes Yes Var No Yes No Yes di/dt Sensor No Yes No Yes
Rev. B
Information furnished by Analog Devices is believed to be accurate and reliable. However, no responsibility is assumed by Analog Devices for its use, nor for any infringements of patents or other rights of third parties that may result from its use. Specifications subject to change without notice. No license is granted by implication or otherwise under any patent or patent rights of Analog Devices. Trademarks and registered trademarks are the property of their respective owners.
One Technology Way, P.O. Box 9106, Norwood, MA 02062-9106, U.S.A. Tel: 781.329.4700 www.analog.com Fax: 781.461.3113 (c)2008-2009 Analog Devices, Inc. All rights reserved.
ADE5166/ADE5169/ADE5566/ADE5569 TABLE OF CONTENTS
General Features ............................................................................... 1 Energy Measurement Features........................................................ 1 Microprocessor Features.................................................................. 1 Revision History ............................................................................... 3 General Description ......................................................................... 4 Functional Block Diagrams ............................................................. 4 Specifications..................................................................................... 6 Energy Metering ........................................................................... 6 Analog Peripherals ....................................................................... 7 Digital Interface ............................................................................ 8 Timing Specifications ................................................................ 10 Absolute Maximum Ratings.......................................................... 15 Thermal Resistance .................................................................... 15 ESD Caution ................................................................................ 15 Pin Configurations and Function Descriptions ......................... 16 Typical Performance Characteristics ........................................... 20 Terminology .................................................................................... 24 Special Function Register (SFR) Mapping .................................. 25 Power Management ........................................................................ 27 Power Management Register Details ....................................... 27 Power Supply Architecture ........................................................ 30 Battery Switchover...................................................................... 30 Power Supply Management (PSM) Interrupt ......................... 30 Using the Power Supply Features ............................................. 32 Operating Modes ............................................................................ 35 PSM0 (Normal Mode) ............................................................... 35 PSM1 (Battery Mode) ................................................................ 35 PSM2 (Sleep Mode).................................................................... 35 3.3 V Peripherals and Wake-Up Events ................................... 36 Transitioning Between Operating Modes ............................... 37 Using the Power Management Features .................................. 37 Energy Measurement ..................................................................... 38 Access to Energy Measurement SFRs ...................................... 38 Access to Internal Energy Measurement Registers ................ 38 Energy Measurement Registers ................................................ 41 Energy Measurement Internal Registers Details .................... 42 Interrupt Status/Enable SFRs .................................................... 45 Analog Inputs .............................................................................. 46 Analog-to-Digital Conversion .................................................. 47 Fault Detection (ADE5166/ADE5169 Only) .......................... 51
Rev. B | Page 2 of 156
di/dt Current Sensor and Digital Integrator (ADE5169/ADE5569 Only) ...................................................... 52 Power Quality Measurements................................................... 53 Phase Compensation ................................................................. 55 RMS Calculation ........................................................................ 56 Active Power Calculation .......................................................... 58 Active Energy Calculation ........................................................ 61 Reactive Power Calculation (ADE5169/ADE5569 Only) ..... 64 Reactive Energy Calculation (ADE5169/ADE5569 Only) ... 66 Apparent Power Calculation ..................................................... 69 Apparent Energy Calculation ................................................... 69 Ampere-Hour Accumulation ................................................... 71 Energy-to-Frequency Conversion............................................ 72 Energy Register Scaling ............................................................. 72 Energy Measurement Interrupts .............................................. 73 Temperature, Battery, and Supply Voltage Measurements........ 74 Temperature Measurement ....................................................... 76 Battery Measurement ................................................................. 76 External Voltage Measurement ................................................ 77 8052 MCU Core Architecture....................................................... 79 MCU Registers ............................................................................ 79 Basic 8052 Registers ................................................................... 81 Standard 8052 SFRs.................................................................... 83 Memory Overview ..................................................................... 84 Addressing Modes ...................................................................... 85 Instruction Set ............................................................................ 86 Read-Modify-Write Instructions ............................................. 88 Instructions That Affect Flags .................................................. 89 Dual Data Pointers ......................................................................... 91 Interrupt System ............................................................................. 92 Standard 8052 Interrupt Architecture ..................................... 92 Interrupt Architecture ............................................................... 92 Interrupt Registers...................................................................... 92 Interrupt Priority ........................................................................ 93 Interrupt Flags ............................................................................ 94 Interrupt Vectors ........................................................................ 96 Interrupt Latency........................................................................ 96 Context Saving ............................................................................ 96 Watchdog Timer ............................................................................. 97
ADE5166/ADE5169/ADE5566/ADE5569
Writing to the Watchdog Timer SFR (WDCON, Address 0xC0).............................................................................................98 Watchdog Timer Interrupt.........................................................98 LCD Driver ......................................................................................99 LCD Registers ..............................................................................99 LCD Setup ................................................................................. 102 LCD Timing and Waveforms ................................................. 102 Blink Mode ................................................................................ 103 Scrolling Mode ......................................................................... 103 Display Element Control ......................................................... 103 Voltage Generation .................................................................. 104 LCD External Circuitry ........................................................... 104 LCD Function in PSM2 Mode ............................................... 105 Flash Memory ............................................................................... 106 Flash Memory Overview ......................................................... 106 Flash Memory Organization................................................... 106 Using the Flash Memory ......................................................... 107 Protecting the Flash Memory ................................................. 110 In-Circuit Programming ......................................................... 112 Timers ............................................................................................ 113 Timer Registers......................................................................... 113 Timer 0 and Timer 1 ................................................................ 115 Timer 2 ...................................................................................... 116 PLL ................................................................................................. 118 PLL Registers ............................................................................ 118 Real-Time Clock (RTC) .............................................................. 119 Access to RTC SFRs ................................................................. 119 Access to Internal RTC Registers ........................................... 119 RTC SFRs .................................................................................. 120 RTC Registers ........................................................................... 123 RTC Calendar ........................................................................... 124 RTC Interrupts ......................................................................... 125 RTC Crystal Compensation.................................................... 126
2
UART Serial Interface ...................................................................127 UART SFRs ................................................................................127 UART Operation Modes ..........................................................130 UART Baud Rate Generation ..................................................131 UART Additional Features ......................................................133 UART2 Serial Interface.................................................................134 UART2 SFRs ..............................................................................134 UART2 Operation Modes ........................................................136 UART2 Baud Rate Generation ................................................136 UART2 Additional Features ....................................................137 Serial Peripheral Interface (SPI) ..................................................138 SPI Registers ..............................................................................138 SPI Pins.......................................................................................141 SPI Master Operating Modes ..................................................142 SPI Interrupt and Status Flags .................................................143 I C-Compatible Interface .............................................................144 Serial Clock Generation ...........................................................144 Slave Addresses..........................................................................144 I2C Registers ...............................................................................144 Read and Write Operations .....................................................145 I2C Receive and Transmit FIFOs.............................................146 I/O Ports .........................................................................................147 Parallel I/O .................................................................................147 I/O Registers ..............................................................................148 Port 0...........................................................................................151 Port 1...........................................................................................151 Port 2...........................................................................................151 Determining the Version of the ADE5166/ADE5169/ADE5566/ADE5569 ................................152 Outline Dimensions ......................................................................153 Ordering Guide .........................................................................153
REVISION HISTORY
11/09--Rev. A to Rev. B Deleted RTCCAL Function ......................................... Throughout Changes to Fault Detection (ADE5166/ADE5169 Only) Section ...................................................................................51 2/09--Rev. 0 to Rev. A Added ADE5566/ADE5569 .............................................. Universal Changes to General Features and Microprocessor Features ....... 1 Change to Figure 29, Figure 30, and Figure 31 ...........................23 Changes to Figure 46 ......................................................................49 Changes to Figure 59 ...................................................................... 56 Changes to Figure 61 ...................................................................... 57 Change to Figure 73 ........................................................................ 67 Changes to Figure 89 ...................................................................... 95 Changes to Figure 103 .................................................................. 120 Changes to Determining the Version of the ADE5166/ADE5169/ADE5566/ADE5569 Section .................. 152 Changes to Ordering Guide ......................................................... 153 10/08--Revision 0: Initial Version
Rev. B | Page 3 of 156
ADE5166/ADE5169/ADE5566/ADE5569
GENERAL DESCRIPTION
The ADE5166/ADE5169/ADE5566/ADE55691 integrate the Analog Devices, Inc., energy (ADE) metering IC analog front end and fixed function DSP solution with an enhanced 8052 MCU core, a full RTC, an LCD driver, and all the peripherals to make an electronic energy meter with an LCD display in a single part. The ADE measurement core includes active, reactive, and apparent energy calculations, as well as voltage and current rms measurements. This information is accessible for energy billing by using the built-in energy scalars. Many power line supervisory features such as SAG, peak, and zero crossing are included in the energy measurement DSP to simplify energy meter design.
1
The microprocessor functionality includes a single-cycle 8052 core, a full RTC with a power supply backup pin, an SPI or I2C interface, and two independent UART interfaces. The ready-to-use information from the ADE core reduces the requirement for program memory size, making it easy to integrate complicated design into 62 kB of flash memory. The ADE5166/ADE5169 include a 104-segment LCD driver and the ADE5566/ADE5569 include a 108-segment LCD driver, each with the capability to store up to four LCD screens in memory. This driver generates voltages capable of driving LCDs up to 5 V.
Patents pending.
FUNCTIONAL BLOCK DIAGRAMS
P0.0 (BCTRL/INT1/P0.0) P0.3/CF2 P0.4/MOSI/SDATA P0.5/MISO/ZX P0.6/SCLK/T0 P0.7/SS/T1/RxD2
P1.3/T2EX/FP24
MOSI/SDATA
P1.1/TxD P1.2/FP25/ZX
P1.4/T2/FP23 P1.5/FP22
7 8
REFIN/OUT
P1.6/FP21
57
43 42
38 39 40 41
39 38 7
6
45 11 43 42 41 40 39 38
37 36 5
6
9 10 12 13
P1.7/FP20
P0.1/FP19
P1.0/RxD
P0.2/CF1
SCLK
MISO
T2EX
CF1
CF2
SS
T0
T1
T2
P2.0/FP18 P2.1/FP17 P2.2/FP16 P2.3 (SDEN/P2.3/TxD2) LCDVP1 LCDVP2 LCDVA LCDVB LCDVC COM0
1.20V REF IPA 52 IN 53 IPB 55 VP 49 VN 50 DGND 63 AGND 54 + PGA1 - + PGA1 - + PGA2 - ADC
SPI/I2C SERIAL INTERFACE
3 x 16-BIT COUNTER TIMERS
ADE5166/ADE5169
14 44 19 16
3V/5V LCD CHARGE PUMP ENERGY MEASUREMENT DSP 104-SEGMENT LCD DRIVER PROGRAM MEMORY 62kB FLASH USER RAM 256 BYTES SINGLE CYCLE 8052 MCU WATCHDOG TIMER
18 17 15 4
ADC
...
COM3 FP0
ADC
...
1 35
...
FP15 FP16 FP17 FP18 FP19 FP20 FP21 FP22 FP23 FP24 FP25 FP27 FP28
TEMP SENSOR BATTERY ADC
TEMP ADC
USER XRAM 2kB
VBAT 58
UART2 TIMER DOWNLOADER DEBUGGER UART TIMER UART SERIAL PORT PLL UART2 SERIAL PORT
POWER SUPPLY CONTROL AND MONITORING
POR LDO LDO
1-PIN EMULATOR
VSW ADC
RTC
OSC
64
60
61
62
59
56
51
36
37
44
38
47
46
48
45
VSWOUT
XTAL1
XTAL2
EA
VINTD
VINTA
TxD
VDCIN
RESET
TxD2
RxD2
INT0
INT1
VDD
RxD
.. .
20 14 13 12 11 10 9 8 7 6 5 1 2
Figure 1. ADE5166/ADE5169 Functional Block Diagram
Rev. B | Page 4 of 156
07411-201
ADE5166/ADE5169/ADE5566/ADE5569
P0.0 (BCTRL/INT1/P0.0) P0.3/CF2 P0.4/MOSI/SDATA P0.5/MISO/ZX P0.6/SCLK/T0 P0.7/SS/T1/RxD2 P1.3/T2EX/FP24
MOSI/SDATA
P1.0/RxD P1.1/TxD P1.2/FP25/ZX
P1.4/T2/FP23 P1.5/FP22
7 8
REFIN/OUT
P0.1/FP19
57
43 42
38 39 40 41
39 38 7
6
45 11 43 42 41 40 39 38
37 36 5
6
P1.6/FP21 P1.7/FP20
9 10 12 P2.0/FP18 13 P2.1/FP17
1.20V REF IP 52 IN 53 + PGA1 - ADC
SPI/I2C SERIAL INTERFACE
P0.2/CF1
SCLK
MISO
T2EX
CF1
CF2
SS
T0
T1
T2
3 x 16-BIT COUNTER TIMERS
ADE5566/ADE5569
14 P2.2/FP16 44 P2.3 (SDEN/P2.3/TxD2) 19 16
LCDVP1 LCDVP2 LCDVA LCDVB LCDVC COM0
3V/5V LCD CHARGE PUMP ENERGY MEASUREMENT DSP
18 17 15 4
...
COM3
VP 49 VN 50 DGND 63 AGND 54
+ PGA2 -
ADC PROGRAM MEMORY 62kB FLASH USER RAM 256 BYTES TEMP ADC USER XRAM 2kB SINGLE CYCLE 8052 MCU WATCHDOG TIMER
108-SEGMENT LCD DRIVER
...
1
35 FP0
...
FP16 FP17 FP18 FP19 FP20 FP21 FP22 FP23 FP24 FP25 FP26 FP27 FP28
TEMP SENSOR BATTERY ADC
VBAT 58
UART2 TIMER PLL
VSW ADC
1-PIN EMULATOR
DOWNLOADER DEBUGGER
UART2 SERIAL PORT
RTC
OSC
POWER SUPPLY CONTROL AND MONITORING
POR LDO LDO
UART TIMER
UART SERIAL PORT
36 37 44 38 47 46 48 45
64
60
61
62
59
56
51
.. .
14 13 12 11 10 9 8 7 6 5 55 1 2
20 FP15
VSWOUT
RESET
XTAL1
Figure 2. ADE5566/ADE5569 Functional Block Diagram
Rev. B | Page 5 of 156
07411-001
XTAL2
EA
VINTD
VINTA
TxD
VDCIN
TxD2
RxD2
INT0
INT1
VDD
RxD
ADE5166/ADE5169/ADE5566/ADE5569 SPECIFICATIONS
VDD = 3.3 V 5%, AGND = DGND = 0 V, on-chip reference XTALx = 32.768 kHz, TMIN to TMAX = -40C to +85C, unless otherwise noted.
ENERGY METERING
Table 2.
Parameter MEASUREMENT ACCURACY 1 Phase Error Between Channels PF = 0.8 Capacitive PF = 0.5 Inductive Active Energy Measurement Error 2 AC Power Supply Rejection2 Output Frequency Variation DC Power Supply Rejection2 Output Frequency Variation Active Energy Measurement Bandwidth1 Reactive Energy Measurement Error2 Vrms Measurement Error2 Vrms Measurement Bandwidth1 Irms Measurement Error2 Irms Measurement Bandwidth1 ANALOG INPUTS Maximum Signal Levels ADE5166/ADE5169 ADE5566/ADE5569 Input Impedance (DC) ADC Offset Error2 Gain Error2 Current Channel Voltage Channel Gain Error Match CF1 AND CF2 PULSE OUTPUT Maximum Output Frequency Min Typ Max Unit Test Conditions/Comments
0.05 0.05 0.1 0.01 0.01 8 0.5 0.5 3.9 0.5 3.9 500 500 500 770 10 1 3 3 0.2 21.6
Degrees Degrees % of reading % % kHz % of reading % of reading kHz % of reading kHz mV peak mV peak mV peak k mV mV % % % kHz
Phase lead: 37 Phase lag: 60 Over a dynamic range of 1000 to 1 at 25C VDD = 3.3 V + 100 mV rms/120 Hz IPx = VP = 100 mV rms VDD = 3.3 V 117 mV dc
Over a dynamic range of 1000 to 1 at 25C Over a dynamic range of 100 to 1 at 25C Over a dynamic range of 500 to 1 at 25C
VP - VN differential input IPA - IN and IPB - IN differential inputs IP - IN PGA1 = PGA2 = 1 PGA1 = 16 IPA = IPB = 0.5 V dc or IP = 0.5 V dc VP - VN = 0.5 V dc
Duty Cycle Active High Pulse Width FAULT DETECTION 3 Fault Detection Threshold Inactive Input Active Input Input Swap Threshold Inactive Input > Active Input Accuracy Fault Mode Operation IPA Active, IPB = AGND IPB Active, IPA = AGND Fault Detection Delay Swap Delay
1 2
50 90
% ms
VP - VN = 500 mV peak; IPA - IN = 500 mV for the ADE5166/ADE5169; IP - IN = 500 mV for the ADE5566/ADE5569 If the CF1 or CF2 frequency > 5.55 Hz If the CF1 or CF2 frequency < 5.55 Hz
6.25 6.25 0.1 0.1 3 3
% of active % of active % of reading % of reading Seconds Seconds
IPA or IPB active IPA or IPB active Over a dynamic range of 500 to 1 Over a dynamic range of 500 to 1
These specifications are not production tested but are guaranteed by design and/or characterization data on production release. See the Terminology section for definition. 3 Available only in the ADE5166/ADE5169.
Rev. B | Page 6 of 156
ADE5166/ADE5169/ADE5566/ADE5569
ANALOG PERIPHERALS
Table 3.
Parameter INTERNAL ADCs (BATTERY, TEMPERATURE, VDCIN) Power Supply Operating Range No Missing Codes 1 Conversion Delay 2 ADC Gain VDCIN Measurement VBAT Measurement Temperature Measurement ADC Offset VDCIN Measurement at 3 V VBAT Measurement at 3.7 V Temperature Measurement at 25C VDCIN Analog Input Maximum Signal Levels Input Impedance (DC) Low VDCIN Detection Threshold POWER-ON RESET (POR) VDD POR Detection Threshold POR Active Timeout Period VSWOUT POR Detection Threshold POR Active Timeout Period VINTD POR Detection Threshold POR Active Timeout Period VINTA POR Detection Threshold POR Active Timeout Period BATTERY SWITCHOVER Voltage Operating Range (VSWOUT) VDD to VBAT Switching Switching Threshold (VDD) Switching Delay VBAT to VDD Switching Switching Threshold (VDD) Switching Delay VSWOUT to VBAT Leakage Current LCD, CHARGE PUMP ACTIVE Charge Pump Capacitance Between LCDVP1 and LCDVP2 LCDVA, LCDVB, LCDVC Decoupling Capacitance LCDVA LCDVB LCDVC V1 Segment Line Voltage V2 Segment Line Voltage V3 Segment Line Voltage DC Voltage Across Segment and COMx Pin Min 2.4 8 38 15.3 14.6 0.83 200 246 123 0 1 1.09 3.3 1.2 1.27 Typ Max 3.7 Unit V Bits s mV/LSB mV/LSB C/LSB LSB LSB LSB V M V Test Conditions/Comments Measured on VSWOUT
2.5 33 1.8 20 2.0 16 2.0 120 2.4 2.5 10 30 2.5 30 10 100 470 0 0 0 LCDVA - 0.1 LCDVB - 0.1 LCDVC - 0.1
2.95
V ms V ms V ms V ms V V ns ms V ms nA nF nF V V V V V V mV
2.2
2.25
2.25
3.7 2.95
When VDD to VBAT switch is activated by VDD When VDD to VBAT switch is activated by VDCIN
2.95
Based on VDD > 2.75 V VBAT = 0 V, VSWOUT = 3.43 V, TA = 25C
1.9 3.8 5.8 LCDVA LCDVB LCDVC 50
1/3 bias mode 1/3 bias mode Current on segment line = -2 A Current on segment line = -2 A Current on segment line = -2 A LCDVC - LCDVB, LCDVC - LCDVA, or LCDVB - LCDVA
Rev. B | Page 7 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Parameter LCD, RESISTOR LADDER ACTIVE Leakage Current V1 Segment Line Voltage V2 Segment Line Voltage V3 Segment Line Voltage ON-CHIP REFERENCE Reference Error Power Supply Rejection Temperature Coefficient1
1 2
Min
Typ 20
Max
Unit nA V V V mV dB ppm/C
Test Conditions/Comments 1/2 and 1/3 bias modes, no load Current on segment line = -2 A Current on segment line = -2 A Current on segment line = -2 A Nominal 1.2035 V TA = 25C, fCORE = 1.024 MHz fCORE = 1.024 MHz
LCDVA - 0.1 LCDVB - 0.1 LCDVC - 0.1 -2.2 80 10
LCDVA LCDVB LCDVC +2.2 50
These specifications are not production tested but are guaranteed by design and/or characterization data on production release. Delay between ADC conversion request and interrupt set.
DIGITAL INTERFACE
Table 4.
Parameter LOGIC INPUTS 1 All Inputs Except XTAL1, XTAL2, BCTRL, INT0, INT1, RESET Input High Voltage, VINH Input Low Voltage, VINL BCTRL, INT0, INT1, RESET Input High Voltage, VINH Input Low Voltage, VINL Input Currents RESET Port 0, Port 1, Port 2 Min Typ Max Unit Test Conditions/Comments
2.0 0.8 1.3 0.8 100 100 -3.75 -8.5 10 20,000 20 30 32 50 33.5
V V V V nA nA A pF Cycles Years k kHz pF pF MHz kHz V A V mA ms ms ms ms RESET = VSWOUT = 3.3 V Internal pull-up disabled, input = 0 V or VSWOUT Internal pull-up enabled, input = 0 V, VSWOUT = 3.3 V All digital inputs At 25C TJ = 85C
Input Capacitance FLASH MEMORY Endurance 2 Data Retention 3 CRYSTAL OSCILLATOR 4 Crystal Equivalent Series Resistance Crystal Frequency XTAL1 Input Capacitance XTAL2 Output Capacitance MCU CLOCK RATE (fCORE) LOGIC OUTPUTS Output High Voltage, VOH ISOURCE Output Low Voltage, VOL 5 ISINK START-UP TIME 6 PSM0 Power-On Time From Power Saving Mode 1 (PSM1) PSM1 to PSM0 From Power Saving Mode 2 (PSM2) PSM2 to PSM1 PSM2 to PSM0
32.768 12 12 4.096 32
Crystal = 32.768 kHz and CD bits = 0b000 Crystal = 32.768 kHz and CD bits = 0b111 VDD = 3.3 V 5% VDD = 3.3 V 5%
2.4 80 0.4 2 880 130 48 186
Rev. B | Page 8 of 156
VDD at 2.75 V to PSM0 code execution VDD at 2.75 V to PSM0 code execution Wake-up event to PSM1 code execution VDD at 2.75 V to PSM0 code execution
ADE5166/ADE5169/ADE5566/ADE5569
Parameter POWER SUPPLY INPUTS VDD VBAT INTERNAL POWER SUPPLY SWITCH (VSWOUT) VBAT to VSWOUT On Resistance VDD to VSWOUT On Resistance VBAT to/from VDD Switching Open Time BCTRL State Change and Switch Delay VSWOUT Output Current Drive POWER SUPPLY OUTPUTS VINTA VINTD VINTA Power Supply Rejection VINTD Power Supply Rejection POWER SUPPLY CURRENTS Current in Normal Mode (PSM0) Min 3.13 2.4 Typ 3.3 3.3 Max 3.46 3.7 12 9 40 18 6 2.3 2.3 60 50 4.4 2.2 1.6 3 3.3 1 38 1.7
1 2
Unit V V ns s mA V V dB dB mA mA mA mA mA mA A A
Test Conditions/Comments
VBAT = 2.4 V VDD = 3.13 V
2.70 2.70
5.3
3.9 5.05
Current in Battery Mode (PSM1) Current in Sleep Mode (PSM2)
fCORE = 4.096 MHz, LCD and meter active fCORE = 1.024 MHz, LCD and meter active fCORE = 32.768 kHz, LCD and meter active fCORE = 4.096 MHz; metering ADC and DSP, powered down fCORE = 4.096 MHz, LCD active, VBAT = 3.7 V fCORE = 1.024 MHz, LCD active LCD active with charge pump at 3.3 V + RTC, VBAT = 3.3 V RTC only, TA = 25C, VBAT = 3.3 V
Specifications guaranteed by design. Endurance is qualified as per JEDEC Standard 22 Method A117 and measured at -40C, +25C, +85C, and +125C. 3 Retention lifetime equivalent at junction temperature (TJ) = 85C as per JEDEC Standard 22 Method A117. Retention lifetime derates with junction temperature. 4 Recommended crystal specifications. 5 Test carried out with all the I/Os set to a low output level. 6 Delay between power supply valid and execution of first instruction by 8052 core.
Rev. B | Page 9 of 156
ADE5166/ADE5169/ADE5566/ADE5569
TIMING SPECIFICATIONS
AC inputs during testing were driven at VSWOUT - 0.5 V for Logic 1 and at 0.45 V for Logic 0. Timing measurements were made at VIH minimum for Logic 1 and at VIL maximum for Logic 0, as shown in Figure 3. For timing purposes, a port pin is no longer floating when a 100 mV change from load voltage occurs. A port pin begins to float when a 100 mV change from the loaded VOH/VOL level occurs, as shown in Figure 3. CLOAD = 80 pF for all outputs, unless otherwise noted. VDD = 2.7 V to 3.6 V; all specifications TMIN to TMAX, unless otherwise noted.
VLOAD - 0.1V VLOAD VLOAD + 0.1V TIMING REFERENCE POINTS VLOAD - 0.1V VLOAD - 0.1V
07411-002
VSWOUT - 0.5V
0.45V
0.2VSWOUT + 0.9V TEST POINTS 0.2VSWOUT - 0.1V
VLOAD
Figure 3. Timing Waveform Characteristics
Table 5. Clock Input (External Clock Driven XTAL1) Parameters
Parameter tCK tCKL tCKH tCKR tCKF 1/tCORE
1
Description XTAL1 period XTAL1 width low XTAL1 width high XTAL1 rise time XTAL1 fall time Core clock frequency 1
Min
32.768 kHz External Crystal Typ Max 30.52 6.26 6.26 9 9 1.024
Unit s s s ns ns MHz
The ADE5166/ADE5169/ADE5566/ADE5569 internal PLL locks onto a multiple (512x) of the 32.768 kHz external crystal frequency to provide a stable 4.096 MHz internal clock for the system. The core can operate at this frequency or at a binary submultiple defined by the CD bits of the POWCON SFR, Address 0xC5[2:0] (see Table 26).
Table 6. I2C-Compatible Interface Timing Parameters (400 kHz)
Parameter tBUF tL tH tSHD tDSU tDHD tRSU tPSU tR tF tSUP 1
1
Description Bus-free time between stop condition and start condition SCLK low pulse width SCLK high pulse width Start condition hold time Data setup time Data hold time Setup time for repeated start Stop condition setup time Rise time of both SCLK and SDATA Fall time of both SCLK and SDATA Pulse width of spike suppressed
Typ 1.3 1.36 1.14 251.35 740 400 12.5 400 200 300 50
Unit s s s s ns ns ns ns ns ns ns
Input filtering on both the SCLK and SDATA suppresses noise spikes of <50 ns.
tBUF
SDATA (I/O) MSB
tSUP
LSB ACK
tR
MSB
tDSU tPSU
SCLK (I)
PS STOP START CONDITION CONDITION
tDHD tSHD
1 2 TO 7 8
tDSU tH
9
tDHD tRSU
tF tR
1
S(R)
tL
tSUP
REPEATED START
Figure 4. I2C-Compatible Interface Timing
Rev. B | Page 10 of 156
07411-003
tF
ADE5166/ADE5169/ADE5566/ADE5569
Table 7. SPI Master Mode Timing Parameters (SPICPHA = 1)
Parameter tSL tSH tDAV tDSU tDHD tDF tDR tSR tSF
1
Description SCLK low pulse width SCLK high pulse width Data output valid after SCLK edge Data input setup time before SCLK edge Data input hold time after SCLK edge Data output fall time Data output rise time SCLK rise time SCLK fall time
Min 2SPIR x tCORE 1 2SPIR x tCORE1 0 tCORE1
Typ
Max
3 x tCORE1
19 19 19 19
Unit ns ns ns ns ns ns ns ns ns
tCORE depends on the clock divider or the CD bits of the POWCON SFR, Address 0xC5[2:0] (see Table 26); tCORE = 2CD/4.096 MHz.
SCLK (SPICPOL = 0) SCLK (SPICPOL = 1)
tSH
tSL tSR tSF
tDAV
MOSI MSB
tDF
tDR
BITS[6:1] LSB
MISO
MSB IN
BITS[6:1]
LSB IN
07411-004
tDSU
tDHD
Figure 5. SPI Master Mode Timing (SPICPHA = 1)
Rev. B | Page 11 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 8. SPI Master Mode Timing Parameters (SPICPHA = 0)
Parameter tSL tSH tDAV tDOSU tDSU tDHD tDF tDR tSR tSF
1
Description SCLK low pulse width SCLK high pulse width Data output valid after SCLK edge Data output setup before SCLK edge Data input setup time before SCLK edge Data input hold time after SCLK edge Data output fall time Data output rise time SCLK rise time SCLK fall time
Min 2SPIR x tCORE 1 2SPIR x tCORE1
Typ (SPIR + 1) x tCORE1 (SPIR + 1) x tCORE1
Max
3 x tCORE1 75 0 tCORE1 19 19 19 19
Unit ns ns ns ns ns ns ns ns ns ns
tCORE depends on the clock divider or the CD bits of the POWCON SFR, Address 0xC5[2:0] (see Table 26); tCORE = 2CD/4.096 MHz.
SCLK (SPICPOL = 0) SCLK (SPICPOL = 1)
tSH
tSL tSR tSF
tDAV tDOSU
MOSI MSB BITS[6:1] LSB
tDF
tDR
MISO
MSB IN
BITS[6:1]
LSB IN
07411-005
tDSU
tDHD
Figure 6. SPI Master Mode Timing (SPICPHA = 0)
Rev. B | Page 12 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 9. SPI Slave Mode Timing Parameters (SPICPHA = 1)
Parameter tSS tSL tSH tDAV tDSU tDHD tDF tDR tSR tSF tSFS
1
Description SS to SCLK edge SCLK low pulse width SCLK high pulse width Data output valid after SCLK edge Data input setup time before SCLK edge Data input hold time after SCLK edge Data output fall time Data output rise time SCLK rise time SCLK fall time SS high after SCLK edge
Min 145 6 x tCORE 1 6 x tCORE1
Typ
Max
Unit ns ns ns ns ns s ns ns ns ns ns
25 0 2 x tCORE1 + 0.5 19 19 19 19 0
tCORE depends on the clock divider or the CD bits of the POWCON SFR, Address 0xC5[2:0] (see Table 26); tCORE = 2CD/4.096 MHz.
SS
tSS
tSFS
SCLK (SPICPOL = 0)
tSH
tSL tSR tSF
SCLK (SPICPOL = 1)
tDAV
MISO MSB
tDF
tDR
BITS[6:1] LSB
MOSI
MSB IN
BITS[6:1]
LSB IN
07411-006
tDSU
tDHD
Figure 7. SPI Slave Mode Timing (SPICPHA = 1)
Rev. B | Page 13 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 10. SPI Slave Mode Timing Parameters (SPICPHA = 0)
Parameter tSS tSL tSH tDAV tDSU tDHD tDF tDR tSR tSF tDOSS tSFS
1
Description SS to SCLK edge SCLK low pulse width SCLK high pulse width Data output valid after SCLK edge Data input setup time before SCLK edge Data input hold time after SCLK edge Data output fall time Data output rise time SCLK rise time SCLK fall time Data output valid after SS edge SS high after SCLK edge
Min 145 6 x tCORE 1 6 x tCORE1
Typ
Max
Unit ns ns ns ns ns s ns ns ns ns ns ns
25 0 2 x tCORE1+ 0.5 19 19 19 19 0 0
tCORE depends on the clock divider or the CD bits of the POWCON SFR, Address 0xC5[2:0] (see Table 26); tCORE = 2CD/4.096 MHz.
SS
tSS
tSFS
SCLK (SPICPOL = 0)
tSH
SCLK (SPICPOL = 1)
tSL tSR tSF
tDAV tDOSS
MISO MSB
tDF
tDR
BITS[6:1] LSB
MOSI
MSB IN
BITS[6:1]
LSB IN
07411-007
tDSU
tDHD
Figure 8. SPI Slave Mode Timing (SPICPHA = 0)
Rev. B | Page 14 of 156
ADE5166/ADE5169/ADE5566/ADE5569 ABSOLUTE MAXIMUM RATINGS
TA = 25C, unless otherwise noted. Table 11.
Parameter VDD to DGND VBAT to DGND VDCIN to DGND Input LCD Voltage to AGND, LCDVA, LCDVB, LCDVC1 Analog Input Voltage to AGND, VP, VN, IP/IPA, IPB, and IN Digital Input Voltage to DGND Digital Output Voltage to DGND Operating Temperature Range (Industrial) Storage Temperature Range 64-Lead LQFP, Power Dissipation Lead Temperature (Soldering, 30 sec)
1
Rating -0.3 V to +3.7 V -0.3 V to +3.7 V -0.3 V to VSWOUT + 0.3 V -0.3 V to VSWOUT + 0.3 V -2 V to +2 V -0.3 V to VSWOUT + 0.3 V -0.3 V to VSWOUT + 0.3 V -40C to +85C -65C to +150C 300C
Stresses above those listed under Absolute Maximum Ratings may cause permanent damage to the device. This is a stress rating only; functional operation of the device at these or any other conditions above those indicated in the operational section of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability.
THERMAL RESISTANCE
JA is specified for the worst-case condition, that is, a device soldered in a circuit board for surface-mount packages. Table 12. Thermal Resistance
Package Type 64-Lead LQFP JA 60 JC 20.5 Unit C/W
ESD CAUTION
When used with external resistor divider.
Rev. B | Page 15 of 156
ADE5166/ADE5169/ADE5566/ADE5569 PIN CONFIGURATIONS AND FUNCTION DESCRIPTIONS
REFIN/OUT VSWOUT RESET IPB DGND AGND VDCIN VINTD VINTA VBAT VDD IPA EA VN
64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49
COM3/FP27 COM2/FP28 COM1 COM0 P1.2/FP25/ZX P1.3/T2EX/FP24 P1.4/T2/FP23 P1.5/FP22 P1.6/FP21
VP
IN
1 2 3 4 5 6 7 8 9 PIN 1
48 47 46 45 44 43 42
INT0 XTAL1 XTAL2 BCTRL/INT1/P0.0 SDEN/P2.3/TxD2 P0.2/CF1 P0.3/CF2 P0.4/MOSI/SDATA P0.5/MISO/ZX P0.6/SCLK/T0 P0.7/SS/T1/RxD2 P1.0/RxD P1.1/TxD FP0 FP1 FP2
ADE5166/ADE5169
TOP VIEW (Not to Scale)
41 40 39 38 37 36 35 34 33
P1.7/FP20 10 P0.1/FP19 11 P2.0/FP18 12 P2.1/FP17 13 P2.2/FP16 14 LCDVC 15 LCDVP2 16
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
LCDVA
FP9
FP8
FP7
FP6
FP5
FP4
FP15
FP14
FP13
FP12
FP11
LCDVP1
LCDVB
FP10
FP3
Figure 9. ADE5166/ADE5169 Pin Configuration
Table 13. Pin Function Descriptions
Pin No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17, 18 19 20 to 35 36 37 38 39 40 41 Mnemonic COM3/FP27 COM2/FP28 COM1 COM0 P1.2/FP25/ZX P1.3/T2EX/FP24 P1.4/T2/FP23 P1.5/FP22 P1.6/FP21 P1.7/FP20 P0.1/FP19 P2.0/FP18 P2.1/FP17 P2.2/FP16 LCDVC LCDVP2 LCDVB, LCDVA LCDVP1 FP15 to FP0 P1.1/TxD P1.0/RxD P0.7/SS/T1/RxD2 P0.6/SCLK/T0 P0.5/MISO/ZX P0.4/MOSI/SDATA Description Common Output 3/LCD Segment Output 27. COM3 is used for the LCD backplane. Common Output 2/LCD Segment Output 28. COM2 is used for the LCD backplane. Common Output 1. COM1 is used for the LCD backplane. Common Output 0. COM0 is used for the LCD backplane. General-Purpose Digital I/O Port 1.2/LCD Segment Output 25/ZX Output. General-Purpose Digital I/O Port 1.3/Timer 2 Control Input/LCD Segment Output 24. General-Purpose Digital I/O Port 1.4/Timer 2 Input/LCD Segment Output 23. General-Purpose Digital I/O Port 1.5/LCD Segment Output 22. General-Purpose Digital I/O Port 1.6/LCD Segment Output 21. General-Purpose Digital I/O Port 1.7/LCD Segment Output 20. General-Purpose Digital I/O Port 0.1/LCD Segment Output 19. General-Purpose Digital I/O Port 2.0/LCD Segment Output 18. General-Purpose Digital I/O Port 2.1/LCD Segment Output 17. General-Purpose Digital I/O Port 2.2/LCD Segment Output 16. Output Port for LCD Levels. This pin should be decoupled with a 470 nF capacitor. Analog Output. A 100 nF capacitor should be connected between this pin and LCDVP1 for the internal LCD charge pump device. Output Ports for LCD Levels. These pins should be decoupled with a 470 nF capacitor. Analog Output. A 100 nF capacitor should be connected between this pin and LCDVP2 for the internal LCD charge pump device. LCD Segment Output 15 to LCD Segment Output 0. General-Purpose Digital I/O Port 1.1/Transmitter Data Output (Asynchronous). General-Purpose Digital I/O Port 1.0/Receive Data Input (Asynchronous). General-Purpose Digital I/O Port 0.7/Slave Select When SPI Is in Slave Mode/Timer 1 Input/Receive Data Input 2 (Asynchronous). General-Purpose Digital I/O Port 0.6/Clock Output for I2C or SPI Port/Timer 0 Input. General-Purpose Digital I/O Port 0.5/Data Input for SPI Port/ZX Output. General-Purpose Digital I/O Port 0.4/Data Output for SPI Port/I2C-Compatible Data Line.
Rev. B | Page 16 of 156
07411-010
ADE5166/ADE5169/ADE5566/ADE5569
Pin No. 42 43 44 Mnemonic P0.3/CF2 P0.2/CF1 SDEN/P2.3/TxD2 Description General-Purpose Digital I/O Port 0.3/Calibration Frequency Logic Output 2. The CF2 logic output gives instantaneous active, reactive, or apparent power or Irms information. General-Purpose Digital I/O Port 0.2/Calibration Frequency Logic Output 1. The CF1 logic output gives instantaneous active, reactive, or apparent power or Irms information. Serial Download Mode Enable/General-Purpose Digital Output Port 2.3/Transmitter Data Output 2 (Asynchronous). This pin is used to enable serial download mode through a resistor when pulled low on power-up or reset. On reset, this pin momentarily becomes an input, and the status of the pin is sampled. If there is no pull-down resistor in place, the pin momentarily goes high, and then user code is executed. If the pin is pulled down on reset, the embedded serial download/debug kernel executes, and this pin remains low during the internal program execution. After reset, this pin can be used as a digital output port pin (P2.3) or as Transmitter Data Output 2 (asynchronous). Digital Input for Battery Control/External Interrupt Input 1/General-Purpose Digital I/O Port 0.0. This logic input connects VDD or VBAT to VSWOUT internally when set to logic high or logic low, respectively. When left open, the connection between VDD or VBAT and VSWOUT is selected internally. A crystal can be connected across this pin and XTAL1 (see the XTAL1 pin description) to provide a clock source. The XTAL2 pin can drive one CMOS load when an external clock is supplied at XTAL1 or by the gate oscillator circuit. An internal 6 pF capacitor is connected to this pin. An external clock can be provided at this logic input. Alternatively, a tuning fork crystal can be connected across XTAL1 and XTAL2 to provide a clock source. The clock frequency for specified operation is 32.768 kHz. An internal 6 pF capacitor is connected to this pin. External Interrupt Input 0. Analog Inputs for Voltage Channel. These inputs are fully differential voltage inputs with a maximum differential level of 500 mV for specified operation. This channel also has an internal PGA. Input for Emulation. When held high, this input enables the device to fetch code from internal program memory locations. The ADE5166/ADE5169 do not support external code memory. This pin should not be left floating. Analog Inputs for Current Channel. These inputs are fully differential voltage inputs with a maximum differential level of 500 mV for specified operation. This channel also has an internal PGA. Ground Reference for Analog Circuitry. Analog Input for Second Current Channel. This input is fully differential with a maximum differential level of 500 mV, referred to IN for specified operation. This channel also has an internal PGA. Reset Input, Active Low. Access to On-Chip Voltage Reference. The on-chip reference has a nominal value of 1.2 V 0.1% and a typical temperature coefficient of 50 ppm/C maximum. This pin should be decoupled with a 1 F capacitor in parallel with a ceramic 100 nF capacitor. Power Supply Input from the Battery with a 2.4 V to 3.7 V Range. This pin is connected internally to VDD when the battery is selected as the power supply. Access to On-Chip 2.5 V Analog LDO. No external active circuitry should be connected to this pin. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. 3.3 V Power Supply Input from the Regulator. This pin is connected internally to VSWOUT when the regulator is selected as the power supply. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. 3.3 V Power Supply Output. This pin provides the supply voltage for the LDOs and the internal circuitry. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. Access to On-Chip 2.5 V Digital LDO. No external active circuitry should be connected to this pin. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. Ground Reference for Digital Circuitry. Analog Input for DC Voltage Monitoring. The maximum input voltage on this pin is VSWOUT with respect to AGND. This pin is used to monitor the preregulated dc voltage.
45
BCTRL/INT1/P0.0
46
XTAL2
47
XTAL1
48 49, 50 51
INT0 VP, VN EA
52, 53 54 55 56 57
IPA, IN AGND IPB RESET REFIN/OUT
58 59 60
VBAT VINTA VDD
61 62 63 64
VSWOUT VINTD DGND VDCIN
Rev. B | Page 17 of 156
ADE5166/ADE5169/ADE5566/ADE5569
REFIN/OUT VSWOUT RESET DGND AGND VDCIN VINTD VINTA VBAT VDD FP26 EA VN VP IN IP
64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49
COM3/FP27 COM2/FP28 COM1 COM0 P1.2/FP25/ZX P1.3/T2EX/FP24 P1.4/T2/FP23 P1.5/FP22 P1.6/FP21
1 2 3 4 5 6 7 8 9 PIN 1
48 47 46 45 44 43 42
INT0 XTAL1 XTAL2 BCTRL/INT1/P0.0 SDEN/P2.3/TxD2 P0.2/CF1 P0.3/CF2 P0.4/MOSI/SDATA P0.5/MISO/ZX P0.6/SCLK/T0 P0.7/SS/T1/RxD2 P1.0/RxD P1.1/TxD FP0 FP1 FP2
ADE5566/ADE5569
TOP VIEW (Not to Scale)
41 40 39 38 37 36 35 34 33
P1.7/FP20 10 P0.1/FP19 11 P2.0/FP18 12 P2.1/FP17 13 P2.2/FP16 14 LCDVC 15 LCDVP2 16
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
LCDVA
FP9
FP8
FP7
FP6
FP5
FP4
FP15
FP14
FP13
FP12
FP11
LCDVP1
LCDVB
FP10
FP3
Figure 10. ADE5566/ADE5569 Pin Configuration
Table 14. Pin Function Descriptions
Pin No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17, 18 19 20 to 35 36 37 38 39 40 41 42 Mnemonic COM3/FP27 COM2/FP28 COM1 COM0 P1.2/FP25/ZX P1.3/T2EX/FP24 P1.4/T2/FP23 P1.5/FP22 P1.6/FP21 P1.7/FP20 P0.1/FP19 P2.0/FP18 P2.1/FP17 P2.2/FP16 LCDVC LCDVP2 LCDVB, LCDVA LCDVP1 FP15 to FP0 P1.1/TxD P1.0/RxD P0.7/SS/T1/RxD2 P0.6/SCLK/T0 P0.5/MISO/ZX P0.4/MOSI/SDATA P0.3/CF2 Description Common Output 3/LCD Segment Output 27. COM3 is used for the LCD backplane. Common Output 2/LCD Segment Output 28. COM2 is used for the LCD backplane. Common Output 1. COM1 is used for the LCD backplane. Common Output 0. COM0 is used for the LCD backplane. General-Purpose Digital I/O Port 1.2/LCD Segment Output 25/ZX Output. General-Purpose Digital I/O Port 1.3/Timer 2 Control Input/LCD Segment Output 24. General-Purpose Digital I/O Port 1.4/Timer 2 Input/LCD Segment Output 23. General-Purpose Digital I/O Port 1.5/LCD Segment Output 22. General-Purpose Digital I/O Port 1.6/LCD Segment Output 21. General-Purpose Digital I/O Port 1.7/LCD Segment Output 20. General-Purpose Digital I/O Port 0.1/LCD Segment Output 19. General-Purpose Digital I/O Port 2.0/LCD Segment Output 18. General-Purpose Digital I/O Port 2.1/LCD Segment Output 17. General-Purpose Digital I/O Port 2.2/LCD Segment Output 16. Output Port for LCD Levels. This pin should be decoupled with a 470 nF capacitor. Analog Output. A 100 nF capacitor should be connected between this pin and LCDVP1 for the internal LCD charge pump device. Output Ports for LCD Levels. These pins should be decoupled with a 470 nF capacitor. Analog Output. A 100 nF capacitor should be connected between this pin and LCDVP2 for the internal LCD charge pump device. LCD Segment Output 15 to LCD Segment Output 0. General-Purpose Digital I/O Port 1.1/Transmitter Data Output (Asynchronous). General-Purpose Digital I/O Port 1.0/Receive Data Input (Asynchronous). General-Purpose Digital I/O Port 0.7/Slave Select When SPI Is in Slave Mode/Timer 1 Input/Receive Data Input 2 (Asynchronous). General-Purpose Digital I/O Port 0.6/Clock Output for I2C or SPI Port/Timer 0 Input. General-Purpose Digital I/O Port 0.5/Data Input for SPI Port/ZX Output. General-Purpose Digital I/O Port 0.4/Data Output for SPI Port/I2C-Compatible Data Line. General-Purpose Digital I/O Port 0.3/Calibration Frequency Logic Output 2. The CF2 logic output gives instantaneous active, reactive, or apparent power or Irms information.
Rev. B | Page 18 of 156
07411-028
ADE5166/ADE5169/ADE5566/ADE5569
Pin No. 43 44 Mnemonic P0.2/CF1 SDEN/P2.3/TxD2 Description General-Purpose Digital I/O Port 0.2/Calibration Frequency Logic Output 1. The CF1 logic output gives instantaneous active, reactive, or apparent power or Irms information. Serial Download Mode Enable/General-Purpose Digital Output Port 2.3/Transmitter Data Output 2 (Asynchronous). This pin is used to enable serial download mode through a resistor when pulled low on power-up or reset. On reset, this pin momentarily becomes an input, and the status of the pin is sampled. If there is no pull-down resistor in place, the pin momentarily goes high, and then user code is executed. If the pin is pulled down on reset, the embedded serial download/debug kernel executes, and this pin remains low during the internal program execution. After reset, this pin can be used as a digital output port pin (P2.3) or as Transmitter Data Output 2 (asynchronous). Digital Input for Battery Control/External Interrupt Input 1/General-Purpose Digital I/O Port 0.0. This logic input connects VDD or VBAT to VSWOUT internally when set to logic high or logic low, respectively. When left open, the connection between VDD or VBAT and VSWOUT is selected internally. A crystal can be connected across this pin and XTAL1 (see the XTAL1 pin description) to provide a clock source. The XTAL2 pin can drive one CMOS load when an external clock is supplied at XTAL1 or by the gate oscillator circuit. An internal 6 pF capacitor is connected to this pin. An external clock can be provided at this logic input. Alternatively, a tuning fork crystal can be connected across XTAL1 and XTAL2 to provide a clock source. The clock frequency for specified operation is 32.768 kHz. An internal 6 pF capacitor is connected to this pin. External Interrupt Input 0. Analog Inputs for Voltage Channel. These inputs are fully differential voltage inputs with a maximum differential level of 500 mV for specified operation. This channel also has an internal PGA. Input for Emulation. When held high, this input enables the device to fetch code from internal program memory locations. The ADE5566/ADE5569 do not support external code memory. This pin should not be left floating. Analog Inputs for Current Channel. These inputs are fully differential voltage inputs with a maximum differential level of 500 mV for specified operation. This channel also has an internal PGA. Ground Reference for Analog Circuitry. LCD Segment Output 26. Reset Input, Active Low. Access to On-Chip Voltage Reference. The on-chip reference has a nominal value of 1.2 V 0.1% and a typical temperature coefficient of 50 ppm/C maximum. This pin should be decoupled with a 1 F capacitor in parallel with a ceramic 100 nF capacitor. Power Supply Input from the Battery with a 2.4 V to 3.7 V Range. This pin is connected internally to VDD when the battery is selected as the power supply. Access to On-Chip 2.5 V Analog LDO. No external active circuitry should be connected to this pin. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. 3.3 V Power Supply Input from the Regulator. This pin is connected internally to VSWOUT when the regulator is selected as the power supply. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. 3.3 V Power Supply Output. This pin provides the supply voltage for the LDOs and the internal circuitry. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. Access to On-Chip 2.5 V Digital LDO. No external active circuitry should be connected to this pin. This pin should be decoupled with a 10 F capacitor in parallel with a ceramic 100 nF capacitor. Ground Reference for Digital Circuitry. Analog Input for DC Voltage Monitoring. The maximum input voltage on this pin is VSWOUT with respect to AGND. This pin is used to monitor the preregulated dc voltage.
45
BCTRL/INT1/P0.0
46
XTAL2
47
XTAL1
48 49, 50 51
INT0 VP, VN EA
52, 53 54 55 56 57
IP, IN AGND FP26 RESET REFIN/OUT
58 59 60
VBAT VINTA VDD
61 62 63 64
VSWOUT VINTD DGND VDCIN
Rev. B | Page 19 of 156
ADE5166/ADE5169/ADE5566/ADE5569 TYPICAL PERFORMANCE CHARACTERISTICS
2.0 1.5 1.0 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE MID CLASS C 1.5 1.0 2.0 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE
ERROR (% of Reading)
0.5 0 -0.5 -1.0 -1.5
ERROR (% of Reading)
+25C; PF = 1
+85C; PF = 1
0.5 0 -0.5 -1.0 -1.5
+25C; PF = 0
-40C; PF = 0.866
+85C; PF = 0
-40C; PF = 1
+25C; PF = 0.866
-40C; PF = 0
MID CLASS C
07411-126
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 11. Active Energy Error as a Percentage of Reading (Gain = 1) over Temperature with Internal Reference, Integrator Off
1.5 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE
Figure 14. Reactive Energy Error as a Percentage of Reading (Gain = 1) over Power Factor with Internal Reference, Integrator Off
2.0 1.5 1.0 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE MID CLASS C
1.0 ERROR (% of Reading)
0.5
+85C; PF = 1
ERROR (% of Reading)
MID CLASS C +85C; PF = 0.5 -40C; PF = 0.5
0.5 0 -0.5 -1.0 -1.5
+85C; PF = 1
-40C; PF = 1
0 +25C; PF = 1 -0.5 +25C; PF = 0.5 -40C; PF = 1 MID CLASS C
+25C; PF = 1
-1.0
MID CLASS C
07411-127
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 12. Active Energy Error as a Percentage of Reading (Gain = 1) over Power Factor with Internal Reference, Integrator Off
2.0 1.5 1.0 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE
Figure 15. Current RMS Error as a Percentage of Reading (Gain = 1) over Temperature with Internal Reference, Integrator Off
2.0 1.5 1.0 ERROR (% of Reading) -40C; PF = 0.5 0.5 0 +25C; PF = 0.5 -0.5 -1.0 -1.5 MID CLASS C +25C; PF = 1 +85C; PF = 1 +85C; PF = 0.5 -40C; PF = 1 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE MID CLASS C
ERROR (% of Reading)
0.5 0 -0.5 -1.0 -1.5
+25C; PF = 0
+85C; PF = 0
-40C; PF = 0
07411-128
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 13. Reactive Energy Error as a Percentage of Reading (Gain = 1) over Temperature with Internal Reference, Integrator Off
Figure 16. Current RMS Error as a Percentage of Reading (Gain = 1) over Power Factor with Internal Reference, Integrator Off
Rev. B | Page 20 of 156
07411-131
-2.0 0.1
-2.0 0.1
07411-130
-1.5 0.1
-2.0 0.1
07411-129
-2.0 0.1
-2.0 0.1
ADE5166/ADE5169/ADE5566/ADE5569
0.5 0.4 0.3 ERROR (% of Reading) 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4
07411-132
1.5 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE
1.0
GAIN = 8 INTEGRATOR OFF INTERNAL REFERENCE
IRMS; 3.13V
VRMS; 3.3V IRMS; 3.3V VRMS; 3.43V
ERROR (% of Reading)
MID CLASS C 0.5 PF = +1 0 PF = +0.5 -0.5 PF = -0.5 MID CLASS C
VRMS; 3.13V IRMS; 3.43V
-1.0
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 17. Voltage and Current RMS Error as a Percentage of Reading (Gain = 1) over Power Supply with Internal Reference
1.0 0.8 0.6 MID CLASS B GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE
Figure 20. Active Energy Error as a Percentage of Reading (Gain = 8) over Power Factor with Internal Reference, Integrator Off
1.0 0.8 0.6 GAIN = 8 INTEGRATOR OFF INTERNAL REFERENCE
ERROR (% of Reading)
ERROR (% of Reading)
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
07411-133
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 PF = -0.866 PF = 0 PF = +0.866
PF = 1 PF = 0.5
MID CLASS B
45
50
55
60
65
70
1
10
100
LINE FREQUENCY (Hz)
CURRENT CHANNEL (% of Full Scale)
Figure 18. Active Energy Error as a Percentage of Reading (Gain = 1) over Frequency with Internal Reference, Integrator Off
0.5 0.4 0.3 GAIN = 1 INTEGRATOR OFF INTERNAL REFERENCE
Figure 21. Reactive Energy Error as a Percentage of Reading (Gain = 8) over Power Factor with Internal Reference, Integrator Off
1.5 GAIN = 8 INTEGRATOR OFF INTERNAL REFERENCE
1.0
ERROR (% of Reading)
0.2 W; 3.13V 0.1 0 -0.1 -0.2 -0.3 -0.4
07411-134
ERROR (% of Reading)
MID CLASS C 0.5 PF = +1 0 PF = -0.5 -0.5 MID CLASS C -1.0 PF = +0.5
VAR; 3.13V
VAR; 3.43V
W; 3.3V W; 3.43V
VAR; 3.3V
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 19. Active and Reactive Energy Error as a Percentage of Reading (Gain = 1) over Power Supply with Internal Reference, Integrator Off
Figure 22. Current RMS Error as a Percentage of Reading (Gain = 8) over Power Factor with Internal Reference, Integrator Off
Rev. B | Page 21 of 156
07411-137
-0.5 0.1
-1.5 0.1
07411-136
-1.0 40
-1.0 0.1
07411-135
-0.5 0.1
-1.5 0.1
ADE5166/ADE5169/ADE5566/ADE5569
2.0 1.5 1.0 GAIN = 16 INTEGRATOR OFF INTERNAL REFERENCE MID CLASS C
1.0 0.8 0.6 GAIN = 16 INTEGRATOR OFF INTERNAL REFERENCE +85C; PF = 0.866 +85C; PF = 0 -40C; PF = 0.866 -40C; PF = 0
ERROR (% of Reading)
ERROR (% of Reading)
0.4 0.2 0 -0.2 -0.4 -0.6
0.5 0 -0.5 -1.0 -1.5
+25C; PF = 1
+85C; PF = 1
-40C; PF = 1
+25C; PF = 0
+25C; PF = 0.866
MID CLASS C
07411-138
-0.8
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 23. Active Energy Error as a Percentage of Reading (Gain = 16) over Temperature with Internal Reference, Integrator Off
2.0 1.5 1.0 GAIN = 16 INTEGRATOR OFF INTERNAL REFERENCE MID CLASS C
Figure 26. Reactive Energy Error as a Percentage of Reading (Gain = 16) over Power Factor with Internal Reference, Integrator Off
2.0 1.5 1.0 GAIN = 16 INTEGRATOR OFF INTERNAL REFERENCE MID CLASS C
ERROR (% of Reading)
0.5 0 -0.5 -1.0 -1.5
+25C; PF = 1
ERROR (% of Reading)
+85C; PF = 1
-40C; PF = 0.5
0.5 0 -0.5 -1.0 -1.5
+85C; PF = 1
-40C; PF = 1 +85C; PF = 0.5
+25C; PF = 0.5
-40C; PF = 1 +25C; PF = 1
MID CLASS C
07411-139
MID CLASS C
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 24. Active Energy Error as a Percentage of Reading (Gain = 16) over Power Factor with Internal Reference, Integrator Off
1.0 0.8 0.6 GAIN = 16 INTEGRATOR OFF INTERNAL REFERENCE
Figure 27. Current RMS Error as a Percentage of Reading (Gain = 16) over Temperature with Internal Reference, Integrator Off
2.0 1.5 1.0 GAIN = 16 INTEGRATOR OFF INTERNAL REFERENCE +85C; PF = 1 +25C; PF = 0.5 +85C; PF = 0.5 MID CLASS C
ERROR (% of Reading)
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
+85C; PF = 0
ERROR (% of Reading)
-40C; PF = 0
0.5 0 -0.5 -1.0 -1.5
+25C; PF = 0
-40C; PF = 1 +25C; PF = 1 -40C; PF = 0.5 MID CLASS C
07411-140
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 25. Reactive Energy Error as a Percentage of Reading (Gain = 16) over Temperature with Internal Reference, Integrator Off
Figure 28. Current RMS Error as a Percentage of Reading (Gain = 16) over Power Factor with Internal Reference, Integrator Off
Rev. B | Page 22 of 156
07411-143
-1.0 0.1
-2.0 0.1
07411-142
-2.0 0.1
-2.0 0.1
07411-141
-2.0 0.1
-1.0 0.1
ADE5166/ADE5169/ADE5566/ADE5569
2.0 1.5 1.0 ERROR (% of Reading) 0.5 0 -40C; PF = 0.5 -0.5 -1.0 -1.5 MID CLASS C
07411-144
2.0
GAIN = 16 INTEGRATOR ON INTERNAL REFERENCE -40C; PF = 1 +85C; PF = 1
MID CLASS C
1.5 1.0
GAIN = 16 INTEGRATOR ON INTERNAL REFERENCE
MID CLASS C
ERROR (% of Reading)
+85C; PF = 0.5
0.5 0 -0.5 -1.0 -1.5
+85C; PF = 1
+25C; PF = 1 +25C; PF = 0.5
-40C; PF = 0.5 -40C; PF = 1 +25C; PF = 0.5 +25C; PF = 1
+85C; PF = 0.5
MID CLASS C
1
10
100
1
10
100
CURRENT CHANNEL (% of Full Scale)
CURRENT CHANNEL (% of Full Scale)
Figure 29. Active Energy Error as a Percentage of Reading (Gain = 16) over Power Factor with Internal Reference, Integrator On
1.0 0.8 0.6 GAIN = 16 INTEGRATOR ON INTERNAL REFERENCE +85C; PF = 0.866 +85C; PF = 0 -40C; PF = 0
Figure 31. Current RMS Error as a Percentage of Reading (Gain = 16) over Power Factor with Internal Reference, Integrator On
ERROR (% of Reading)
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
+25C; PF = 0 -40C; PF = 0.866
+25C; PF = 0.866
1
10
100
CURRENT CHANNEL (% of Full Scale)
Figure 30. Reactive Energy Error as a Percentage of Reading (Gain = 16) over Power Factor with Internal Reference, Integrator On
Rev. B | Page 23 of 156
07411-145
-1.0 0.1
07411-146
-2.0 0.1
-2.0 0.1
ADE5166/ADE5169/ADE5566/ADE5569 TERMINOLOGY
Measurement Error The error associated with the energy measurement made by the ADE5166/ADE5169/ADE5566/ADE5569 is defined by the following formula: Measurement Error =
with the same input signal levels when an ac signal (100 mV rms/ 120 Hz) is introduced onto the supplies. Any error introduced by this ac signal is expressed as a percentage of the reading (see the Measurement Error definition). For the dc PSR measurement, a reading at nominal supplies (3.3 V) is taken. A second reading is obtained with the same input signal levels when the supplies are varied 5%. Any error introduced is expressed as a percentage of the reading.
ADC Offset Error ADC offset error is the dc offset associated with the analog inputs to the ADCs. It means that, with the analog inputs connected to AGND, the ADCs still see a dc analog input signal. The magnitude of the offset depends on the gain and input range selection. However, when HPF1 is switched on, the offset is removed from the current channel, and the power calculation is not affected by this offset. The offsets can be removed by performing an offset calibration (see the Analog Inputs section). Gain Error Gain error is the difference between the measured ADC output code (minus the offset) and the ideal output code (see the Current Channel ADC section and the Voltage Channel ADC section). It is measured for each of the gain settings on the current channel (1, 2, 4, 8, and 16). The difference is expressed as a percentage of the ideal code.
Energy Register - True Energy x 100% True Energy
Phase Error Between Channels The digital integrator and the high-pass filter (HPF) in the current channel have a nonideal phase response. To offset this phase response and equalize the phase response between channels, two phase correction networks are placed in the current channel: one for the digital integrator and the other for the HPF. The phase correction networks correct the phase response of the corresponding component and ensure a phase match between the current channel and the voltage channel to within 0.1 over a range of 45 Hz to 65 Hz with the digital integrator off. With the digital integrator on, the phase is corrected to within 0.4 over a range of 45 Hz to 65 Hz. Power Supply Rejection (PSR) PSR quantifies the ADE5166/ADE5169/ADE5566/ADE5569 measurement error as a percentage of reading when the power supplies are varied. For the ac PSR measurement, a reading at nominal supplies (3.3 V) is taken. A second reading is obtained
Rev. B | Page 24 of 156
ADE5166/ADE5169/ADE5566/ADE5569 SPECIAL FUNCTION REGISTER (SFR) MAPPING
Table 15. SFR Mapping
Mnemonic INTPR SCRATCH4 SCRATCH3 SCRATCH2 SCRATCH1 BATVTH STRBPER IPSMF TEMPCAL RTCCOMP BATPR PERIPH DIFFPROG B VDCINADC SBAUD2 LCDSEGE2 IPSME SBUF2 SPISTAT SPI2CSTAT SPIMOD2 I2CADR SPIMOD1 I2CMOD WAV2H WAV2M WAV2L WAV1H WAV1M WAV1L SCON2 ACC BATADC MIRQSTH MIRQSTM MIRQSTL MIRQENH MIRQENM Address 0xFF 0xFE 0xFD 0xFC 0xFB 0xFA 0xF9 0xF8 0xF7 0xF6 0xF5 0xF4 0xF3 0xF0 0xEF 0xEE 0xED 0xEC 0xEB 0xEA 0xEA 0xE9 0xE9 0xE8 0xE8 0xE7 0xE6 0xE5 0xE4 0xE3 0xE2 0xE1 0xE0 0xDF 0xDE 0xDD 0xDC 0xDB 0xDA Description Interrupt pins configuration SFR (see Table 17). Scratch Pad 4 (see Table 25). Scratch Pad 3 (see Table 24). Scratch Pad 2 (see Table 23). Scratch Pad 1 (see Table 22). Battery detection threshold (see Table 53). Peripheral ADC strobe period (see Table 50). Power management interrupt flag (see Table 18). RTC temperature compensation (see Table 133). RTC nominal compensation (see Table 132). Battery switchover configuration (see Table 19). Peripheral configuration (see Table 20). Temperature and supply delta (see Table 51). Auxiliary math (see Table 57). VDCINADC value (see Table 54). Enhanced Serial Baud Rate Control 2 (see Table 148). LCD Segment Enable 2 (see Table 101). Power management interrupt enable (see Table 21). Serial Port 2 buffer (see Table 147). SPI interrupt status (see Table 155). I2C interrupt status (see Table 159). SPI Configuration SFR 2 (see Table 154). I2C slave address (see Table 158). SPI Configuration SFR 1 (see Table 153). I2C mode (see Table 157). Selection 2 sample MSB (see Table 31). Selection 2 sample middle byte (see Table 31). Selection 2 sample LSB (see Table 31). Selection 1 sample MSB (see Table 31). Selection 1 sample middle byte (see Table 31). Selection 1 sample LSB (see Table 31). Serial Communications Control 2 (see Table 146). Accumulator (see Table 57). Battery ADC value (see Table 55). Interrupt Status 3 (see Table 43). Interrupt Status 2 (see Table 42). Interrupt Status 1 (see Table 41). Interrupt Enable 3 (see Table 46). Interrupt Enable 2 (see Table 45). Mnemonic MIRQENL ADCGO TEMPADC IRMSH IRMSM IRMSL VRMSH VRMSM VRMSL PSW TH2 TL2 RCAP2H RCAP2L T2CON EADRH EADRL POWCON KYREG WDCON STCON EDATA PROTKY FLSHKY ECON IP SPH PINMAP2 PINMAP1 PINMAP0 LCDCONY CFG LCDDAT LCDPTR IEIP2 IE DPCON RTCDAT RTCPTR TIMECON2 TIMECON P2 EPCFG Address 0xD9 0xD8 0xD7 0xD6 0xD5 0xD4 0xD3 0xD2 0xD1 0xD0 0xCD 0xCC 0xCB 0xCA 0xC8 0xC7 0xC6 0xC5 0xC1 0xC0 0xBF 0xBC 0xBB 0xBA 0xB9 0xB8 0xB7 0xB4 0xB3 0xB2 0xB1 0xAF 0xAE 0xAC 0xA9 0xA8 0xA7 0xA4 0xA3 0xA2 0xA1 0xA0 0x9F Description Interrupt Enable 1 (see Table 44). Start ADC measurement (see Table 52). Temperature ADC value (see Table 56). Irms measurement MSB (see Table 31). Irms measurement middle byte (see Table 31). Irms measurement LSB (see Table 31). Vrms measurement MSB (see Table 31). Vrms measurement middle byte (see Table 31). Vrms measurement LSB (see Table 31). Program status word (see Table 58). Timer 2 high byte (see Table 120). Timer 2 low byte (see Table 121). Timer 2 reload/capture high byte (see Table 122). Timer 2 reload/capture low byte (see Table 123). Timer/Counter 2 control (see Table 115). Flash high byte address (see Table 110). Flash low byte address (see Table 109). Power control (see Table 26). Key (see Table 126). Watchdog timer (see Table 88). Stack boundary (see Table 65). Flash data (see Table 108). Flash protection key (see Table 107). Flash key (see Table 106). Flash control (see Table 105). Interrupt priority (see Table 82). Stack pointer high (see Table 64). Port 2 weak pull-up enable (see Table 164). Port 1 weak pull-up enable (see Table 163). Port 0 weak pull-up enable (see Table 162). LCD Configuration Y (see Table 94). Configuration (see Table 66). LCD data (see Table 100). LCD pointer (see Table 99). Interrupt Enable and Priority 2 (see Table 83). Interrupt enable (see Table 81). Data pointer control (see Table 79). RTC pointer data (see Table 131). RTC pointer address (see Table 130). RTC Configuration 2 (see Table 129). RTC configuration (see Table 128). Port 2 (see Table 167). Extended port configuration (see Table 161).
Rev. B | Page 25 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Mnemonic SBAUDT SBAUDF LCDCONX SPI2CRx SPI2CTx SBUF SCON LCDSEGE LCDCLK LCDCON MDATH MDATM MDATL Address 0x9E 0x9D 0x9C 0x9B 0x9A 0x99 0x98 0x97 0x96 0x95 0x94 0x93 0x92 Description Enhanced serial baud rate control (see Table 142). UART timer fractional divider (see Table 143). LCD Configuration X (see Table 92). SPI/I2C receive buffer (see Table 152). SPI/I2C transmit buffer (see Table 151). Serial port buffer (see Table 141). Serial communications control (see Table 140). LCD segment enable (see Table 98). LCD clock (see Table 95). LCD configuration (see Table 91). Energy measurement pointer data MSB (see Table 31). Energy measurement pointer data middle byte (see Table 31). Energy measurement pointer data LSB (see Table 31). Mnemonic MADDPT P1 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Address 0x91 0x90 0x8D 0x8C 0x8B 0x8A 0x89 0x88 0x87 0x83 0x82 0x81 0x80 Description Energy measurement pointer address (see Table 30). Port 1 (see Table 166). Timer 1 high byte (see Table 118). Timer 0 high byte (see Table 116). Timer 1 low byte (see Table 119). Timer 0 low byte (see Table 117). Timer/Counter 0 and Timer/Counter 1 mode (see Table 113). Timer/Counter 0 and Timer/Counter 1 control (see Table 114). Program control (see Table 59). Data pointer high (see Table 61). Data pointer low (see Table 60). Stack pointer (see Table 63). Port 0 (see Table 165).
Rev. B | Page 26 of 156
ADE5166/ADE5169/ADE5566/ADE5569 POWER MANAGEMENT
The ADE5166/ADE5169/ADE5566/ADE5569 have elaborate power management circuitry that manages the regular power supply to battery switchover and power supply failures.
Table 16. Power Management SFRs
SFR Address 0xEC 0xF5 0xF8 0xFF 0xF4 0xC5 0xFB 0xFC 0xFD 0xFE R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Mnemonic IPSME BATPR IPSMF INTPR PERIPH POWCON SCRATCH1 SCRATCH2 SCRATCH3 SCRATCH4 Description Power management interrupt enable (see Table 21). Battery switchover configuration (see Table 19). Power management interrupt flag (see Table 18). Interrupt pins configuration (see Table 17). Peripheral configuration (see Table 20). Power control (see Table 26). Scratch Pad 1 (see Table 22). Scratch Pad 2 (see Table 23). Scratch Pad 3 (see Table 24). Scratch Pad 4 (see Table 25).
The power management functionalities can be accessed directly through the 8052 power management SFRs (see Table 16).
POWER MANAGEMENT REGISTER DETAILS
Table 17. Interrupt Pins Configuration SFR (INTPR, Address 0xFF)
Bit 7 [6:5] Mnemonic Reserved FSEL Default N/A 00 Description Reserved. Sets RTC calibration output frequency and calibration window. FSEL Result (Calibration Window, Frequency) 00 30.5 sec, 1 Hz 01 30.5 sec, 512 Hz 10 0.244 sec, 500 Hz 11 0.244 sec, 16 kHz Reserved. Controls the function of INT1. INT1PRG X00 1 X011 01X1 11X1 0 INT0PRG 0 INT0PRG 0 1
1
4 [3:1]
Reserved INT1PRG
N/A 000
Result GPIO enabled BCTRL enabled INT1 input disabled INT1 input enabled Result INT0 input disabled INT0 input enabled
Controls the function of INT0.
X = don't care
Writing to the Interrupt Pins Configuration SFR (INTPR, Address 0xFF)
To protect the RTC from runaway code, a key must be written to the key SFR (KYREG, Address 0xC1) to obtain write access to the INTPR SFR. The KYREG SFR (see Table 126) should be set to 0xEA to unlock the INTPR SFR and reset to 0 after a timekeeping register is written to. The RTC registers can be written using the following 8052 assembly code:
MOV MOV KYREG, #0EAh INTPR, #080h
Rev. B | Page 27 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 18. Power Management Interrupt Flag SFR (IPSMF, Address 0xF8)
Bit 7 6 5 4 3 2 1 0 Bit Address 0xFF 0xFE 0xFD 0xFC 0xFB 0xFA 0xF9 0xF8 Mnemonic FPSR FPSM FSAG Reserved FVADC FBAT FBSO FVDCIN Default 0 0 0 0 0 0 0 0 Description Power supply restored interrupt flag. Set when the VDD power supply has been restored. This occurs when the source of VSWOUT changes from VBAT to VDD. PSM interrupt flag. Set when an enabled PSM interrupt condition occurs. Voltage SAG interrupt flag. Set when an ADE energy measurement SAG condition occurs. This bit must be kept at 0 for proper operation. VDCINADC monitor interrupt flag. Set when VDCIN changes by VDCIN_DIFF or when the VDCIN measurement is ready. VBAT monitor interrupt flag. Set when VBAT falls below BATVTH or when VBAT measurement is ready. Battery switchover interrupt flag. Set when VSWOUT switches from VDD to VBAT. VDCIN monitor interrupt flag. Set when VDCIN falls below 1.2 V.
Table 19. Battery Switchover Configuration SFR (BATPR, Address 0xF5)
Bit [7:2] [1:0] Mnemonic Reserved BATPRG Default 0 0 Description These bits must be kept at 0 for proper operation. Control bits for battery switchover. BATPRG Result 00 Battery switchover enabled on low VDD 01 Battery switchover enabled on low VDD and low VDCIN 1X 1 Battery switchover disabled
1
X = don't care.
Table 20. Peripheral Configuration SFR (PERIPH, Address 0xF4)
Bit 7 6 Mnemonic RX2FLAG VSWSOURCE Default 0 1 Description If set, indicates that an RxD2 edge event has triggered wake-up from PSM2. Indicates the power supply that is internally connected to VSWOUT. 0 = VSWOUT is connected to VBAT. 1 = VSWOUT is connected VDD. If set, indicates that the VDD power supply is ready for operation. If set, indicates that a PLL fault occurred where the PLL lost lock. Set the PLLACK bit (Bit 7) in the start ADC measurement SFR (ADCGO, Address 0xD8) to acknowledge the fault and clear the PLL_FLT bit (see Table 52). Set this bit to enable the internal voltage reference in PSM2 mode. This bit should be set if LCD is on in the PSM1 and PSM2 modes. This bit must be kept at 0 for proper operation. Controls the function of the P0.7/SS/T1/RxD2 pin. RXPROG 00 01 11 Result GPIO RxD2 with wake-up disabled RxD2 with wake-up enabled
5 4
VDD_OK PLL_FLT
1 0
3 2 [1:0]
REF_BAT_EN Reserved RXPROG
0 0 0
Table 21. Power Management Interrupt Enable SFR (IPSME, Address 0xEC)
Bit 7 6 5 4 3 2 1 0 Mnemonic EPSR Reserved ESAG Reserved EVADC EBAT EBSO EVDCIN Default 0 0 0 0 0 0 0 0 Description Enables a PSM interrupt when the power supply restored interrupt flag (FPSR) is set. Reserved. Enables a PSM interrupt when the voltage SAG interrupt flag (FSAG) is set. This bit must be kept at 0 for proper operation. Enables a PSM interrupt when the VDCINADC monitor interrupt flag (FVADC) is set. Enables a PSM interrupt when the VBAT monitor interrupt flag (FBAT) is set. Enables a PSM interrupt when the battery switchover interrupt flag (FBSO) is set. Enables a PSM interrupt when the VDCIN monitor interrupt flag (FVDCIN) is set.
Rev. B | Page 28 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 22. Scratch Pad 1 SFR (SCRATCH1, Address 0xFB)
Bit [7:0] Mnemonic SCRATCH1 Default 0 Description Value can be written/read in this register. This value is maintained in all the power saving modes.
Table 23. Scratch Pad 2 SFR (SCRATCH2, Address 0xFC)
Bit [7:0] Mnemonic SCRATCH2 Default 0 Description Value can be written/read in this register. This value is maintained in all the power saving modes.
Table 24. Scratch Pad 3 SFR (SCRATCH3, Address 0xFD)
Bit [7:0] Mnemonic SCRATCH3 Default 0 Description Value can be written/read in this register. This value is maintained in all the power saving modes.
Table 25. Scratch Pad 4 SFR (SCRATCH4, Address 0xFE)
Bit [7:0] Mnemonic SCRATCH4 Default 0 Description Value can be written/read in this register. This value is maintained in all the power saving modes.
Clearing the Scratch Pad Registers (SCRATCH1, Address 0xFB to SCRATCH4, Address 0xFE)
Note that these scratch pad registers are cleared only when the part loses VDD and VBAT.
Table 26. Power Control SFR (POWCON, Address 0xC5)
Bit 7 6 5 4 3 [2:0] Mnemonic Reserved METER_OFF Reserved COREOFF Reserved CD Default 1 0 0 0 0 010 Description Reserved. Set this bit to turn off the modulators and energy metering DSP circuitry to reduce power if metering functions are not needed in PSM0 mode. This bit should be kept at 0 for proper operation. Set this bit to shut down the core and enter PSM2 mode if in the PSM1 operating mode. Reserved. Controls the core clock frequency, fCORE. fCORE = 4.096 MHz/2CD. CD Result (fCORE in MHz) 000 4.096 001 2.048 010 1.024 011 0.512 100 0.256 101 0.128 110 0.064 111 0.032
Writing to the Power Control SFR (POWCON, Address 0xC5)
Writing data to the power control SFR (POWCON, Address 0xC5) involves writing 0xA7 into the key SFR (KYREG, Address 0xC1), which is described in Table 126, followed by a write to the POWCON SFR. For example,
MOV KYREG,#0A7h MOV POWCON,#10h ;Write KYREG to 0xA7 to get write access to the POWCON SFR ;Shut down the core
Rev. B | Page 29 of 156
ADE5166/ADE5169/ADE5566/ADE5569
POWER SUPPLY ARCHITECTURE
The ADE5166/ADE5169/ADE5566/ADE5569 have two power supply inputs, VDD and VBAT. They require only a single 3.3 V power supply at VDD for full operation. A battery backup, or secondary power supply, with a maximum of 3.7 V can be connected to the VBAT input. Internally, the ADE5166/ADE5169/ADE5566/ ADE5569 connect VDD or VBAT to VSWOUT, which is used to derive power for the ADE5166/ADE5169/ADE5566/ADE5569 circuitry. The VSWOUT output pin reflects the voltage at the internal power supply (VSWOUT) and has a maximum output current of 6 mA. This pin can also be used to power a limited number of peripheral components. The 2.5 V analog supply (VINTA) and the 2.5 V supply for the core logic (VINTD) are derived by on-chip linear regulators from VSWOUT. Figure 32 shows the ADE5166/ADE5169/ADE5566/ ADE5569 power supply architecture.
VDCIN VDD VBAT VSWOUT
stable power supply to the ADE5166/ADE5169/ADE5566/ ADE5569, as long as the external battery voltage is above 2.75 V. It allows continuous code execution even while the internal power supply is switching from VDD to VBAT and back. Note that the energy metering ADCs are not available when VBAT is used for VSWOUT. Power supply management (PSM) interrupts can be enabled to indicate when battery switchover occurs and when the VDD power supply is restored (see the Power Supply Management (PSM) Interrupt section).
Switching from VDD to VBAT
The following three events switch the internal power supply (VSWOUT) from VDD to VBAT:
*
ADC LDO BCTRL POWER SUPPLY MANAGEMENT VSW LDO ADC
VINTD
MCU
*
VINTA
ADE
*
SPI/I2C
SCRATCH PAD
LCD
RTC UART
07411-011
TEMPERATURE ADC 3.3V 2.5V
VDCIN < 1.2 V. When VDCIN falls below 1.2 V, VSWOUT switches from VDD to VBAT. This event is enabled when the BATPRG bits (Bits[1:0]) in the battery switchover configuration SFR (BATPR, Address 0xF5) are set to 0b01. VDD < 2.75 V. When VDD falls below 2.75 V, VSWOUT switches from VDD to VBAT. This event is enabled when the BATPRG bits in the BATPR SFR are cleared. Falling edge on BCTRL. When the battery control pin, BCTRL, goes low, VSWOUT switches from VDD to VBAT. This external switchover signal can trigger a switchover to VBAT at any time. Setting the INT1PRG bits (Bits[3:1]) to 0bX01 in the interrupt pins configuration SFR (INTPR, Address 0xFF) enables the BCTRL pin (see Table 17).
Figure 32. Power Supply Architecture
Switching from VBAT to VDD
To switch VSWOUT from VBAT to VDD, all of the following events must be true:
* *
The ADE5166/ADE5169/ADE5566/ADE5569 provide automatic battery switchover between VDD and VBAT based on the voltage level detected at VDD or VDCIN. In addition, the BCTRL input can be used to trigger a battery switchover. The conditions for switching VSWOUT from VDD to VBAT and back to VDD are described in the Battery Switchover section. VDCIN is an input pin that can be connected to a dc signal of 0 V to 3.3 V. This input is intended for power supply supervisory purposes and does not provide power to the ADE5166/ADE5169/ADE5566/ADE5569 circuitry (see the Battery Switchover section).
*
BATTERY SWITCHOVER
The ADE5166/ADE5169/ADE5566/ADE5569 monitor VDD, VBAT, and VDCIN. Automatic battery switchover from VDD to VBAT can be configured based on the status of the VDD, VDCIN, or BCTRL pin. Battery switchover is enabled by default. Setting Bit 1 in the battery switchover configuration SFR (BATPR, Address 0xF5) disables battery switchover so that VDD is always connected to VSWOUT (see Table 19). The source of VSWOUT is indicated by Bit 6 in the peripheral configuration SFR (PERIPH, Address 0xF4), which is described in Table 20. Bit 6 is set when VSWOUT is connected to VDD and cleared when VSWOUT is connected to VBAT. The battery switchover functionality provided by the ADE5166/ ADE5169/ADE5566/ADE5569 allows a seamless transition from VDD to VBAT. An automatic battery switchover option ensures a
VDD > 2.75 V. VSWOUT switches back to VDD after VDD remains above 2.75 V. VDCIN > 1.2 V and VDD > 2.75 V. If the low VDCIN condition is enabled, VSWOUT switches to VDD after VDCIN remains above 1.2 V and VDD remains above 2.75 V. Rising edge on BCTRL. If the battery control pin is enabled, VSWOUT switches back to VDD after BCTRL is high, and the first or second bullet point is satisfied.
POWER SUPPLY MANAGEMENT (PSM) INTERRUPT
The power supply management (PSM) interrupt alerts the 8052 core of power supply events. The PSM interrupt is disabled by default. Setting Bit 1 (EPSM) in the Interrupt Enable and Priority 2 SFR (IEIP2, Address 0xA9) enables the PSM interrupt (see Table 83). The power management interrupt enable SFR (IPSME, Address 0xEC) controls the events that result in a PSM interrupt (see Table 21). Figure 33 illustrates how the PSM interrupt vector is shared among the PSM interrupt sources. The PSM interrupt flags are latched and must be cleared by writing to the power management interrupt flag SFR (IPSMF, Address 0xF8), as described in Table 18.
Rev. B | Page 30 of 156
ADE5166/ADE5169/ADE5566/ADE5569
EPSR FPSR ESAG FSAG EVADC FVADC EBAT FBAT EBSO FBSO EVDCIN FVDCIN FPSM EPSM TRUE? PENDING PSM INTERRUPT
IPSME ADDR. 0xEC
EPSR
RESERVED
ESAG
RESERVED
EVADC
EBAT
EBSO
EVDCIN
IPSMF ADDR. 0xF8
FPSR
FPSM
FSAG
RESERVED
FVADC
FBAT
FBSO
FVDCIN
IEIP2 ADDR. 0xA9
PS2
PTI
ES2
PSI
EADE
ETI
EPSM
ESI
07411-012
NOT INVOLVED IN PSM INTERRUPT SIGNAL CHAIN
Figure 33. Power Supply Management Interrupt Sources
Battery Switchover and Power Supply Restored PSM Interrupt
The ADE5166/ADE5169/ADE5566/ADE5569 can be configured to generate a PSM interrupt when the source of VSWOUT changes from VDD to VBAT, indicating battery switchover. Setting the EBSO bit (Bit 1) in the power management interrupt enable SFR (IPSME, Address 0xEC) enables this event to generate a PSM interrupt (see Table 21). The ADE5166/ADE5169/ADE5566/ADE5569 can also be configured to generate an interrupt when the source of VSWOUT changes from VBAT to VDD, indicating that the VDD power supply has been restored. Setting the EPSR bit (Bit 7) in the power management interrupt enable SFR (IPSME, Address 0xEC) enables this event to generate a PSM interrupt. The flags in the IPSMF SFR for these interrupts, FBSO (Bit 1) and FPSR (Bit 7), are set regardless of whether the respective enable bits are set. The battery switchover and power supply restore event flags (FBSO and FPSR) are latched. These events must be cleared by writing 0 to these bits. The VSWSOURCE bit (Bit 6) in the peripheral configuration SFR (PERIPH, Address 0xF4) tracks the source of VSWOUT. The bit is set when VSWOUT is connected to VDD and cleared when VSWOUT is connected to VBAT.
the power management interrupt enable SFR (IPSME, Address 0xEC) enables this event to generate a PSM interrupt. The VDCIN voltage is measured using a dedicated ADC. These measurements take place in the background at intervals to check the change in VDCIN. Conversions can also be initiated by writing to the start ADC measurement SFR (ADCGO, Address 0xD8), as described in Table 52. The FVADC flag indicates when a VDCIN measurement is ready. See the External Voltage Measurement section for details on how VDCIN is measured.
VBAT Monitor PSM Interrupt
The VBAT voltage is measured using a dedicated ADC. These measurements take place in the background at intervals to check the change in VBAT. The FBAT bit (Bit 2 in the IPSMF SFR) is set when the battery level is lower than the threshold set in the battery detection threshold SFR (BATVTH, Address 0xFA), described in Table 53; or when a new measurement is ready in the battery ADC value SFR (BATADC, Address 0xDF), described in Table 55. See the Battery Measurement section for more information. Setting the EBAT bit (Bit 2) in the power management interrupt enable SFR (IPSME, Address 0xEC) enables this event to generate a PSM interrupt.
VDCIN Monitor PSM Interrupt
The VDCIN voltage is monitored by a comparator. The FVDCIN bit (Bit 0) in the power management interrupt flag SFR (IPSMF, Address 0xF8) is set when the VDCIN input level is lower than 1.2 V. Setting the EVDCIN bit (Bit 0) in the IPSME SFR enables this event to generate a PSM interrupt. This event, which is associated with the SAG monitoring, can be used to detect that a power supply (VDD) is compromised and to trigger further actions prior to initiating a switch from VDD to VBAT.
VDCINADC PSM Interrupt
The ADE5166/ADE5169/ADE5566/ADE5569 can be configured to generate a PSM interrupt when VDCIN changes magnitude by more than a configurable threshold. This threshold is set in the temperature and supply delta SFR (DIFFPROG, Address 0xF3), as described in Table 51. See the External Voltage Measurement section for more information. Setting the EVADC bit (Bit 3) in
Rev. B | Page 31 of 156
ADE5166/ADE5169/ADE5566/ADE5569
SAG Monitor PSM Interrupt
The ADE5166/ADE5169/ADE5566/ADE5569 energy measurement DSP monitors the ac voltage input at the VP and VN input pins. The SAGLVL register (Address 0x14) is used to set the threshold for a line voltage SAG event. The FSAG bit (Bit 5) in the power management interrupt flag SFR (IPSMF, Address 0xF8) is set if the line voltage stays below the level set in the SAGLVL register for the number of line cycles set in the SAGCYC register (Address 0x13). See the Line Voltage SAG Detection section for more information. Setting the ESAG bit (Bit 5) in the power management interrupt enable SFR (IPSME, Address 0xEC) enables this event to generate a PSM interrupt. Figure 34 shows how the ADE5166/ADE5169/ADE5566/ ADE5569 power supply inputs are set up in this application. Figure 35 shows the sequence of events that occurs if the main power supply generated by the PSU starts to fail in the power meter application shown in Figure 34. The SAG detection can provide the earliest warning of a potential problem on VDD. When a SAG event occurs, user code can be configured to back up data and prepare for battery switchover, if desired. The relative spacing of these interrupts depends on the design of the power supply. Figure 36 shows the sequence of events that occurs if the main power supply starts to fail in the power meter application shown in Figure 34, with battery switchover on low VDCIN or low VDD enabled. Finally, the transition between VDD and VBAT and the different power supply modes (see the Operating Modes section) are represented in Figure 37 and Figure 38.
USING THE POWER SUPPLY FEATURES
In an energy meter application, the 3.3 V power supply (VDD) is typically generated from the ac line voltage and regulated to 3.3 V by a voltage regulator IC. The preregulated dc voltage, typically 5 V to 12 V, can be connected to VDCIN through a resistor divider. A 3.6 V battery can be connected to VBAT.
(240V, 220V, 110V TYPICAL) AC INPUT
BCTRL 45 VP
49
VN
50
SAG DETECTION
5V TO 12V DC
VDCIN
64
VOLTAGE SUPERVISORY
VOLTAGE SUPERVISORY 3.3V REGULATOR VDD
60
POWER SUPPLY MANAGEMENT
IPSMF SFR (ADDR. 0xF8)
PSU
VSW VSWOUT 61
07411-013
VBAT 58
Figure 34. Power Supply Management for Energy Meter Application
Table 27. Power Supply Event Timing Operating Modes
Parameter t1 t2 t3 t4 Time 10 ns min 10 ns min 30 ms typ 130 ms typ Description Time between when VDCIN goes below 1.2 V and when FVDCIN is raised. Time between when VDD falls below 2.75 V and when battery switchover occurs. Time between when VDCIN falls below 1.2 V and when battery switchover occurs if VDCIN is enabled to cause battery switchover. Time between when power supply restore conditions are met (VDCIN > 1.2 V and VDD > 2.75 V if the BATPRG bits = 0b01, or VDD > 2.75 V if the BATPRG bits = 0b00) and when VSWOUT switches to VDD.
Rev. B | Page 32 of 156
ADE5166/ADE5169/ADE5566/ADE5569
VP - VN SAG LEVEL TRIP POINT SAGCYC = 1
VDCIN 1.2V
VDD 2.75V
t1
t2
SAG EVENT (FSAG = 1) VDCIN EVENT (FVDCIN = 1) IF SWITCHOVER ON LOW VDD IS ENABLED, AUTOMATIC BATTERY SWITCHOVER OCCURS. VSWOUT IS CONNECTED TO VBAT .
BSO EVENT (FBSO = 1)
Figure 35. Power Supply Management Interrupts and Battery Switchover with Only VDD Enabled for Battery Switchover
VP - VN SAG LEVEL TRIP POINT SAGCYC = 1
VDCIN 1.2V
t3
VDD 2.75V
t1
SAG EVENT (FSAG = 1)
VDCIN EVENT (FVDCIN = 1)
IF SWITCHOVER ON LOW VDCIN IS ENABLED, AUTOMATIC BATTERY SWITCHOVER OCCURS. VSWOUT IS CONNECTED TO VBAT . BSO EVENT (FBSO = 1)
07411-015
Figure 36. Power Supply Management Interrupts and Battery Switchover with VDD or VDCIN Enabled for Battery Switchover
Rev. B | Page 33 of 156
07411-014
ADE5166/ADE5169/ADE5566/ADE5569
VP - VN
SAG LEVEL TRIP POINT
VDCIN 1.2V
SAG EVENT
VDCIN EVENT
VDCIN EVENT
30ms VBAT VDD 2.75V
130ms
VSWOUT BATTERY SWITCH ENABLED ON LOW VDCIN VSWOUT BATTERY SWITCH ENABLED ON LOW VDD
PSM0 PSM1 OR PSM2
PSM0
PSM0
PSM0
PSM1 OR PSM2
Figure 37. Power Supply Management Transitions Between Modes
Rev. B | Page 34 of 156
07411-016
ADE5166/ADE5169/ADE5566/ADE5569 OPERATING MODES
PSM0 (NORMAL MODE)
In PSM0 mode, or normal operating mode, VSWOUT is connected to VDD. All of the analog circuitry and digital circuitry powered by VINTD and VINTA are enabled by default. In normal mode, the default clock frequency, fCORE, which is established during a power-on reset or software reset, is 1.024 MHz.
* *
The RAM in the MCU is no longer valid. The program counter for the 8052, also held in volatile memory, becomes invalid when the 2.5 V supply is shut down. Therefore, the program does not resume from where it left off but always starts from the power-on reset vector when the ADE5166/ADE5169/ADE5566/ADE5569 exit PSM2 mode.
PSM1 (BATTERY MODE)
In PSM1 mode, or battery mode, VSWOUT is connected to VBAT. In this operating mode, the 8052 core and all of the digital circuitry are enabled by default. The analog circuitry for the ADE energy metering DSP powered by VINTA is disabled. This analog circuitry automatically restarts, and the switch to the VDD power supply occurs when the VDD supply is greater than 2.75 V and the PWRDN bit in the MODE1 register (Address 0x0B) is cleared (see Table 33). The default fCORE for PSM1, established during a power-on reset or software reset, is 1.024 MHz.
The 3.3 V peripherals (temperature ADC, VDCINADC, RTC, and LCD) are active in PSM2 mode. They can be enabled or disabled to reduce power consumption and are configured for PSM2 operation when the MCU core is active (see Table 29 for more information about the individual peripherals and their PSM2 configuration). The ADE5166/ADE5169/ADE5566/ADE5569 remain in PSM2 mode until an event occurs to wake them up. In PSM2 mode, the ADE5166/ADE5169/ADE5566/ADE5569 provide four scratch pad RAM SFRs that are maintained during this mode. These SFRs can be used to save data from the PSM0 or PSM1 mode when entering PSM2 mode (see Table 22 to Table 25). In PSM2 mode, the ADE5166/ADE5169/ADE5566/ADE5569 maintain some SFRs (see Table 28). The SFRs that are not listed in this table should be restored when the part enters PSM0 or PSM1 mode from PSM2 mode.
PSM2 (SLEEP MODE)
PSM2 mode is a low power consumption sleep mode for use in battery operation. In this mode, VSWOUT is connected to VBAT. All of the 2.5 V digital and analog circuitry powered through VINTA and VINTD is disabled, including the MCU core, resulting in the following:
Table 28. SFRs Maintained in PSM2 Mode
I/O Configuration Interrupt pins configuration SFR (INTPR, Address 0xFF); see Table 17. Peripheral configuration SFR (PERIPH, Address 0xF4); see Table 20. Port 0 weak pull-up enable SFR (PINMAP0, Address 0xB2); see Table 162. Port 1 weak pull-up enable SFR (PINMAP1, Address 0xB3); see Table 163. Port 2 weak pull-up enable SFR (PINMAP2, Address 0xB4); see Table 164. Scratch Pad 1 SFR (SCRATCH1, Address 0xFB); see Table 22. Scratch Pad 2 SFR (SCRATCH2, Address 0xFC); see Table 23. Scratch Pad 3 SFR (SCRATCH3, Address 0xFD); see Table 24. Scratch Pad 4 SFR (SCRATCH4, Address 0xFE); see Table 25) Power Supply Management Battery detection threshold SFR (BATVTH, Address 0xFA); see Table 53. Battery switchover configuration SFR (BATPR, Address 0xF5); see Table 19. Battery ADC value SFR (BATADC, Address 0xDF); see Table 55. Peripheral ADC strobe period SFR (STRBPER, Address 0xF9); see Table 50. Temperature and supply delta SFR (DIFFPROG, Address 0xF3); see Table 51. VDCINADC value SFR (VDCINADC, Address 0xEF); see Table 54. Temperature ADC value SFR (TEMPADC, Address 0xD7); see Table 56.
RTC Peripherals RTC nominal compensation SFR (RTCCOMP, Address 0xF6); see Table 132. RTC temperature compensation SFR (TEMPCAL, Address 0xF7); see Table 133. RTC configuration SFR (TIMECON, Address 0xA1); see Table 128. RTC Configuration 2 SFR (TIMECON2, Address 0xA2); see Table 129. All indirectly accessible registers defined in the RTC register list; see Table 134.
LCD Peripherals LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED); see Table 101. LCD Configuration Y SFR (LCDCONY, Address 0xB1); see Table 94. LCD Configuration X SFR (LCDCONX, Address 0x9C); see Table 92. LCD configuration SFR (LCDCON, Address 0x95); see Table 91. LCD clock SFR (LCDCLK, Address 0x96); see Table 95. LCD segment enable SFR (LCDSEGE, Address 0x97); see Table 98. LCD pointer SFR (LCDPTR, Address 0xAC); see Table 99. LCD data SFR (LCDDAT, Address 0xAE); see Table 100.
Rev. B | Page 35 of 156
ADE5166/ADE5169/ADE5566/ADE5569
3.3 V PERIPHERALS AND WAKE-UP EVENTS
Some of the 3.3 V peripherals are capable of waking the ADE5166/ ADE5169/ADE5566/ADE5569 from PSM2 mode. The events that can cause the ADE5166/ADE5169/ADE5566/ADE5569 to wake up from PSM2 mode are listed in the wake-up event column in
Table 29. 3.3 V Peripherals and Wake-Up Events
3.3 V Peripheral Temperature ADC Wake-Up Event T Wake-Up Enable Bits Maskable Flag Interrupt Vector Comments The temperature ADC can wake up the ADE5166/ADE5169/ ADE5566/ADE5569. A pending interrupt is generated according to the description in the Temperature Measurement section. This wake-up event can be disabled by disabling temperature measurements in the temperature and supply delta SFR (DIFFPROG, Address 0xF3) in PSM2 mode. The temperature interrupt needs to be serviced and acknowledged prior to entering PSM2 mode. The VDCIN measurement can wake up the ADE5166/ADE5169/ ADE5566/ADE5569. The FVADC flag, Bit 3 of the power management interrupt flag SFR (IPSMF, Address 0xF8), is set according to the description in the External Voltage Measurement section. This wake-up event can be disabled by clearing the EVADC bit, Bit 3 in the power management interrupt enable SFR (IPSME, Address 0xEC); see Table 21. The FVADC flag needs to be cleared prior to entering PSM2 mode. The ADE5166/ADE5169/ADE5566/ADE5569 wake up if the power supply is restored (if VSWOUT switches to be connected to VDD). The VSWSOURCE flag, Bit 6 of the peripheral configuration SFR (PERIPH, Address 0xF4), is set to indicate that VSWOUT is connected to VDD. The ADE5166/ADE5169/ADE5566/ADE5569 wake up after the programmable time interval has elapsed. The RTC interrupt needs to be serviced and acknowledged prior to entering PSM2 mode. An alarm can be set to wake the ADE5166/ADE5169/ADE5566/ ADE5569 after the desired amount of time. The RTC alarm is enabled by setting the ALxxx_EN bits in the RTC Configuration 2 SFR (TIMECON2, Address 0xA2). The RTC interrupt needs to be serviced and acknowledged prior to entering PSM2 mode. The edge of the interrupt is selected by the IT0 bit, Bit 0 in the TCON SFR (TCON, Address 0x88). The IE0 flag, Bit 1 in the TCON SFR, is not affected. The Interrupt 0 interrupt needs to be serviced and acknowledged prior to entering PSM2 mode. The edge of the interrupt is selected by the IT1 bit, Bit 2 in the TCON SFR (TCON, Address 0x88). The IE1 flag, Bit 3 in the TCON SFR, is not affected. The Interrupt 1 interrupt needs to be serviced and acknowledged prior to entering PSM2 mode. An Rx edge event occurs if a rising or falling edge is detected on the RxD2 line. The UART2 RxD flag needs to be cleared prior to entering PSM2 mode. If the RESET pin is brought low while the ADE5166/ADE5169/ ADE5566/ADE5569 are in PSM2 mode, they wake up to PSM1 mode. The LCD can be enabled/disabled in PSM2 mode. The LCD data memory remains intact. The four SCRATCHx registers remain intact in PSM2 mode.
Table 29. The interrupt flag associated with these events must be cleared prior to executing instructions that put the ADE5166/ ADE5169/ADE5566/ADE5569 in PSM2 mode after wake-up.
VDCINADC
V
Maskable
FVADC (IPSMF[3])
IPSM
Power Supply Management
PSR
Nonmaskable
FPSR (IPSMF[7])
IPSM
RTC
Interval
Maskable
ITFLAG (TIMECON[2]) ALFLAG (TIMECON[6])
IRTC
Alarm
Maskable
IRTC
I/O Ports 1
INT0
INT0PRG = 1 (INTPR[0])
N/A
IE0
INT1
INT1PRG = 11x (INTPR[3:1])
N/A
IE1
Rx2 edge
RXPROG = 11 (PERIPH[1:0]) Nonmaskable
RX2FLAG (PERIPH[7]) N/A
N/A
External Reset LCD Scratch Pad
1
Reset
N/A
N/A N/A
N/A N/A
N/A N/A
N/A N/A
All I/O pins are treated as inputs. The weak pull-up on each I/O pin can be disabled individually in the Port 0 weak pull-up enable SFR (PINMAP0, Address 0xB2), Port 1 weak pull-up enable SFR (PINMAP1, Address 0xB3), and Port 2 weak pull-up enable SFR (PINMAP2, Address 0xB4) to decrease current consumption. The interrupts can be enabled or disabled.
Rev. B | Page 36 of 156
ADE5166/ADE5169/ADE5566/ADE5569
TRANSITIONING BETWEEN OPERATING MODES
The operating mode of the ADE5166/ADE5169/ADE5566/ ADE5569 is determined by the power supply connected to VSWOUT. Therefore, changes in the power supply, such as when VSWOUT switches from VDD to VBAT or when VSWOUT switches to VDD, alter the operating mode. This section describes events that change the operating mode.
Automatic Switch to VDD (PSM1 to PSM0)
If the conditions to switch VSWOUT from VBAT to VDD occur (see the Battery Switchover section), the operating mode switches to PSM0 mode. When this switch occurs, the analog circuitry used in the ADE energy measurement DSP automatically restarts. Note that code execution continues normally. A software reset can be performed to start PSM0 code execution at the power-on reset vector.
Automatic Battery Switchover (PSM0 to PSM1)
If any of the enabled battery switchover events occurs (see the Battery Switchover section), VSWOUT switches to VBAT. This switchover results in a transition from PSM0 to PSM1 operating mode. When battery switchover occurs, the analog circuitry used in the ADE energy measurement DSP is disabled. To reduce power consumption, user code can initiate a transition to PSM2 mode.
USING THE POWER MANAGEMENT FEATURES
Because program flow is different for each operating mode, the status of VSWOUT must be known at all times. The VSWSOURCE bit in the peripheral configuration SFR (PERIPH, Address 0xF4) indicates the power supply to which VSWOUT is connected (see Table 20). This bit can be used to control program flow on wakeup. Because code execution always starts at the power-on reset vector, Bit 6 of the PERIPH SRF can be tested to determine which power supply is being used and to branch to normal code execution or to wake up event code execution. Power supply events can also occur when the MCU core is active. To be aware of the events that change what VSWOUT is connected to, use the following guidelines:
* *
Entering Sleep Mode (PSM1 to PSM2)
To reduce power consumption when VSWOUT is connected to VBAT, user code can initiate sleep mode, PSM2, by setting Bit 4 in the power control SFR (POWCON, Address 0xC5) to shut down the MCU core. Events capable of waking the MCU can be enabled (see the 3.3 V Peripherals and Wake-Up Events section).
Servicing Wake-Up Events (PSM2 to PSM1)
The ADE5166/ADE5169/ADE5566/ADE5569 may need to wake up from PSM2 mode to service wake-up events (see the 3.3 V Peripherals and Wake-Up Events section). PSM1 code execution begins at the power-on reset vector. After servicing the wake-up event, the ADE5166/ADE5169/ADE5566/ADE5569 can return to PSM2 mode by setting Bit 4 in the power control SFR (POWCON, Address 0xC5) to shut down the MCU core.
Enable the battery switchover interrupt (EBSO) if VSWOUT = VDD at power-up. Enable the power supply restored interrupt (EPSR) if VSWOUT = VBAT at power-up.
An early warning that battery switchover is about to occur is provided by SAG detection and, possibly, by low VDCIN detection (see the Battery Switchover section). For a user-controlled battery switchover, enable automatic battery switchover on low VDD only. Next, enable the low VDCIN event to generate the PSM interrupt. When a low VDCIN event occurs, start data backup. Upon completion of the data backup, enable battery switchover on low VDCIN. Battery switchover occurs 30 ms later.
Automatic Switch to VDD (PSM2 to PSM0)
If the conditions to switch VSWOUT from VBAT to VDD occur (see the Battery Switchover section), the operating mode switches to PSM0 mode. When this switch occurs, the MCU core and the analog circuitry used in the ADE energy measurement DSP automatically restart. PSM0 code execution begins at the power-on reset vector.
POWER SUPPLY RESTORED
PSM0
NORMAL MODE VSWOUT IS CONNECTED TO VDD
AUTOMATIC BATTERY SWITCHOVER
PSM1
BATTERY MODE VSWOUT IS CONNECTED TO VBAT
POWER SUPPLY RESTORED
WAKE-UP EVENT USER CODE DIRECTS MCU TO SHUT DOWN CORE AFTER SERVICING A WAKE-UP EVENT
PSM2
07411-017
SLEEP MODE VSWOUT IS CONNECTED TO VBAT
Figure 38. Transitioning Between Operating Modes
Rev. B | Page 37 of 156
ADE5166/ADE5169/ADE5566/ADE5569 ENERGY MEASUREMENT
The ADE5166/ADE5169/ADE5566/ADE5569 offer a fixed function, energy measurement, digital processing core that provides all the information needed to measure energy in single-phase energy meters. The part provides two ways to access the energy measurements: direct access through SFRs for time sensitive information and indirect access through address and data SFRs for the majority of energy measurements. The Irms, Vrms, interrupt, and waveform registers are readily available through the SFRs, as shown in Table 31. Other energy measurement information is mapped to a page of memory that is accessed indirectly through the MADDPT, MDATL, MDATM, and MDATH SFRs. The address and data SFRs act as pointers to the energy measurement internal registers. energy measurement register designated by the address in the MADDPT SFR. If the internal register is one byte long, only the MDATL SFR contents are copied to the internal register. The MDATM SFR and MDATH SFR contents are ignored. The energy measurement core functions with an internal clock of 4.096 MHz5 or 819.2 kHz. Because the 8052 core functions with another clock, 4.096 MHz2CD, synchronization between the two clock environments when CD = 0 or 1 is an issue. When data is written to the internal energy measurement registers, a small wait period needs to be implemented before another read or write to these registers can take place. Sample code to write 0x0155 to the 2-byte SAGLVL register, located at Address 0x14 in the energy measurement memory space, is as follows:
MOV MOV MOV MOV DJNZ MDATM,#01h MDATL,#55h MADDPT,#SAGLVL_W (Address 0x94) A,#05h ACC,$ ;Next write or read to energy measurement SFR can be done after this.
ACCESS TO ENERGY MEASUREMENT SFRs
Access to the energy measurement SFRs is achieved by reading or writing to the SFR addresses detailed in Table 31. The internal data for the MIRQx SFRs is latched byte by byte into the SFR when the SFR is read. The WAV1x, WAV2x, VRMSx, and IRMSx registers are all 3-byte SFRs. The 24-bit data is latched into these SFRs when the high byte is read. Reading the low or medium byte before the high byte results in reading the data from the previous latched sample. Sample code to read the VRMSx register is as follows:
MOV MOV MOV R1, VRMSH R2, VRMSM R3, VRMSL //latches data in VRMSH, VRMSM, and VRMSL SFRs
Reading the Internal Energy Measurement Registers
When Bit 7 of energy measurement pointer address SFR (MADDPT, Address 0x91) is cleared, the contents of the internal energy measurement register designated by the address in MADDPT are transferred to the MDATx SFRs. If the internal register is one byte long, only the MDATL SFR contents are updated with a new value. The MDATM SFR and MDATH SFR contents are reset to 0x00. The energy measurement core functions with an internal clock of 4.096 MHz5 or 819.2 kHz. Because the 8052 core functions with another clock, 4.096 MHz2CD, synchronization between the two clock environments is an issue when CD = 0 or CD = 1. When data is read from the internal energy measurement registers, a small wait period needs to be implemented before the MDATx SFRs are transferred to another SFR. Sample code to read the peak voltage in the 2-byte VPKLVL register, located at Address 0x16, into the data pointer is as follows:
MOV MOV DJNZ MOV MOV MADDPT,#VPKLVL_R (Address 0x16) A,#05h ACC,$ DPH,MDATM DPL,MDATL
ACCESS TO INTERNAL ENERGY MEASUREMENT REGISTERS
Access to the internal energy measurement registers is achieved by writing to the energy measurement pointer address SFR (MADDPT, Address 0x91). This SFR selects the energy measurement register to be accessed and determines if a read or a write is performed (see Table 30).
Table 30. Energy Measurement Pointer Address SFR (MADDPT, Address 0x91)
Bit 7 [6:0] Description 1 = write 0 = read Energy measurement internal register address
Writing to the Internal Energy Measurement Registers
When Bit 7 of the energy measurement pointer address SFR (MADDPT, Address 0x91) is set, the contents of the MDATx SFRs (MDATL, MDATM, and MDATH) are transferred to the internal
Rev. B | Page 38 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 31. Energy Measurement SFRs
Address 0x91 0x92 0x93 0x94 0xD1 0xD2 0xD3 0xD4 0xD5 0xD6 0xD9 0xDA 0xDB 0xDC 0xDD 0xDE 0xE2 0xE3 0xE4 0xE5 0xE6 0xE7 R/W R/W R/W R/W R/W R R R R R R R/W R/W R/W R/W R/W R/W R R R R R R Mnemonic MADDPT MDATL MDATM MDATH VRMSL VRMSM VRMSH IRMSL IRMSM IRMSH MIRQENL MIRQENM MIRQENH MIRQSTL MIRQSTM MIRQSTH WAV1L WAV1M WAV1H WAV2L WAV2M WAV2H Description Energy measurement pointer address. Energy measurement pointer data LSB. Energy measurement pointer data middle byte. Energy measurement pointer data MSB. Vrms measurement LSB. Vrms measurement middle byte. Vrms measurement MSB. Irms measurement LSB. Irms measurement middle byte. Irms measurement MSB. Energy measurement interrupt enable LSB. Energy measurement interrupt enable middle byte. Energy measurement interrupt enable MSB. Energy measurement interrupt status LSB. Energy measurement interrupt status middle byte. Energy measurement interrupt status MSB. Selection 1 sample LSB. Selection 1 sample middle byte. Selection 1 sample MSB. Selection 2 sample LSB. Selection 2 sample middle byte. Selection 2 sample MSB.
IPA I IN
x1, x2, x4, x8, x16 {GAIN[2:0]} PGA1 INTEGRATOR ADC HPF dt PGA1 ADC MULTIPLIER LPF2 CF1NUM[15:0] IBGAIN[11:0] 2 WATTOS[15:0] VARGAIN[11:0] DFC LPF2 CF1DEN[15:0] IRMSOS[11:0] VAROS[15:0] VAGAIN[11:0] CF2NUM[15:0] CF1 WGAIN[11:0]
HPF
IPB
x2
LPF VRMSOS[11:0] VARDIV[7:0]
DFC
CF2
VP PGA2 VN ADC HPF
CF2DEN[15:0]
x2
LPF
VADIV[7:0]
%
%
%
WDIV[7:0]
METERING SFRs
Figure 39. ADE5166/ADE5169 Energy Metering Block Diagram
Rev. B | Page 39 of 156
07411-117
ADE5166/ADE5169/ADE5566/ADE5569
IP I IN PHCAL[7:0] 2 x1, x2, x4, x8, x16 {GAIN[2:0]} PGA1 INTEGRATOR MULTIPLIER ADC dt HPF LPF2 CF1NUM[15:0] WATTOS[15:0] VARGAIN[11:0] DFC LPF2 CF1DEN[15:0] IRMSOS[11:0]
x2
WGAIN[11:0]
CF1
VAROS[15:0] VAGAIN[11:0]
CF2NUM[15:0]
LPF VRMSOS[11:0] VARDIV[7:0]
DFC
CF2
VP VN
PGA2
ADC
HPF
x2
CF2DEN[15:0] LPF VADIV[7:0] % % % WDIV[7:0]
07411-100
METERING SFRs
Figure 40. ADE5566/ADE5569 Energy Metering Block Diagram
Rev. B | Page 40 of 156
ADE5166/ADE5169/ADE5566/ADE5569
ENERGY MEASUREMENT REGISTERS
Table 32. Energy Measurement Register List
Address MADDPT[6:0] 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 Mnemonic WATTHR RWATTHR LWATTHR VARHR 1 RVARHR1 LVARHR1 VAHR RVAHR LVAHR R/W R R R R R R R R R Length (Bits) 24 24 24 24 24 24 24 24 24 Signed/ Unsigned S S S S S S S S S Default 0 0 0 0 0 0 0 0 0 Description Reads the Wh accumulator without reset. Reads the Wh accumulator with reset. Reads the Wh accumulator synchronous to line cycle. Reads the varh accumulator without reset. Reads the varh accumulator with reset. Reads the varh accumulator synchronous to line cycle. Reads VAh accumulator without reset. If the VARMSCFCON bit in the MODE2 register (Address 0x0C) is set, this register accumulates Irms. Reads VAh accumulator with reset. If the VARMSCFCON bit in the MODE2 register (Address 0x0C) is set, this register accumulates Irms. Reads VAh accumulator synchronous to line cycle. If the VARMSCFCON bit in the MODE2 register (Address 0x0C) is set, this register accumulates Irms. Reads line period or frequency register, depending on MODE2 register. Sets basic configuration of energy measurement (see Table 33). Sets basic configuration of energy measurement (see Table 34). Sets configuration of Waveform Sample 1 and Waveform Sample 2 (see Table 35). Sets level of energy no load thresholds (see Table 36). Sets configuration of watt and var accumulation and various tamper alarms (see Table 37). Sets phase calibration register (see the Phase Compensation section). Sets timeout for zero-crossing timeout detection (see the ZeroCrossing Timeout section). Sets number of half-line cycles for LWATTHR, LVARHR, and LVAHR accumulators. Sets number of half-line cycles for SAG detection (see the Line Voltage SAG Detection section). Sets detection level for SAG detection (see the Line Voltage SAG Detection section). Sets peak detection level for current peak detection (see the Peak Detection section). Sets peak detection level for voltage peak detection (see the Peak Detection section). Reads current peak level without reset (see the Peak Detection section). Reads current peak level with reset (see the Peak Detection section). Reads voltage peak level without reset (see the Peak Detection section). Reads voltage peak level with reset (see the Peak Detection section). Sets PGA gain of analog inputs (see Table 38). Sets matching gain for IPB current input. Sets watt gain register. Sets var gain register. Sets VA gain register. Sets watt offset register. Sets var offset register. Sets current rms offset register. Sets voltage rms offset register. Sets watt energy scaling register. Sets var energy scaling register. Sets VA energy scaling register. Sets CF1 numerator register. Sets CF1 denominator register.
0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28
PER_FREQ MODE1 MODE2 WAVMODE NLMODE ACCMODE PHCAL ZXTOUT LINCYC SAGCYC SAGLVL IPKLVL VPKLVL IPEAK RSTIPEAK VPEAK RSTVPEAK GAIN IBGAIN 2 WGAIN VARGAIN1 VAGAIN WATTOS VAROS1 IRMSOS VRMSOS WDIV VARDIV1 VADIV CF1NUM CF1DEN
R R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R R R R R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
16 8 8 8 8 8 8 12 16 8 16 16 16 24 24 24 24 8 12 12 12 12 16 16 12 12 8 8 8 16 16
U U U U U U S U U U U U U U U U U U S S S S S S S S U U U U U
0 0x06 0x40 0 0 0 0x40 0xFFF 0xFFFF 0xFF 0 0xFFFF 0xFFFF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x003F
Rev. B | Page 41 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Address MADDPT[6:0] 0x29 0x2A 0x2B 0x3B 0x3C 0x3D 0x3E 0x3F
1 2
Mnemonic CF2NUM CF2DEN MODE3 Reserved Reserved CALMODE2 Reserved Reserved
R/W R/W R/W R/W
Length (Bits) 16 16 8
Signed/ Unsigned U U U
R/W
8
U
Default 0 0x003F 0 0 0x0300 0 0 0
Description Sets CF2 numerator register. Sets CF2 denominator register. Enables zero-crossing outputs (see Table 39). This register must be set to its default value for proper operation. This register must be set to its default value for proper operation. Sets calibration mode (see Table 40). This register must be set to its default value for proper operation. This register must be set to its default value for proper operation.
This function is not available in the ADE5166 and ADE5566. This function is not available in the ADE5566 and ADE5569.
ENERGY MEASUREMENT INTERNAL REGISTERS DETAILS
Table 33. Mode 1 Register (MODE1, Address 0x0B)
Bit 7 6 5 4 3 2 1 0 Mnemonic SWRST DISZXLPF INTE SWAPBITS PWRDN DISCF2 DISCF1 DISHPF Default 0 0 0 0 0 1 1 0 Description Setting this bit resets all of the energy measurement registers to their default values. Setting this bit disables the zero-crossing low-pass filter. Setting this bit enables the digital integrator for use with a di/dt sensor. Setting this bit swaps CH1 ADC and CH2 ADC. Setting this bit powers down voltage and current ADCs. Setting this bit disables Frequency Output CF2. Setting this bit disables Frequency Output CF1. Setting this bit disables the HPFs in voltage and current channels.
Table 34. Mode 2 Register (MODE2, Address 0x0C)
Bit [7:6] Mnemonic CF2SEL Default 01 Description Configuration bits for CF2 output. CF2SEL Result 00 CF2 frequency is proportional to active power 01 CF2 frequency is proportional to reactive power 1 2 1X CF2 frequency is proportional to apparent power or Irms Configuration bits for CF1 output. CF1SEL Result 00 CF1 frequency is proportional to active power 01 CF1 frequency is proportional to reactive power1 1X 2 CF1 frequency is proportional to apparent power or Irms Configuration bit for apparent power or Irms for CF1 and CF2 outputs and VA accumulation registers (VAHR, RVAHR, and LVAHR). Note that CF1 cannot be proportional to VA if CF2 is proportional to Irms, and vice versa. VARMSCFCON Result 0 If CF1SEL = 1X, CF1 is proportional to VA If CF2SEL = 1X, CF2 is proportional to VA 1 If CF1SEL = 1X, CF1 is proportional to Irms If CF2SEL = 1X, CF2 is proportional to Irms Logic 1 enables update of rms values synchronously to Voltage ZX. Configuration bit to select period or frequency measurement for the PER_FREQ register (Address 0x0A). FREQSEL Result 0 The PER_FREQ register holds a period measurement 1 The PER_FREQ register holds a frequency measurement When this bit is set, waveform sampling mode is enabled.
[5:4]
CF1SEL
00
3
VARMSCFCON
0
2 1
ZXRMS FREQSEL
0 0
0
1 2
WAVEN
0
This function is not available in the ADE5166 and ADE5566. X = don't care.
Rev. B | Page 42 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 35. Waveform Mode Register (WAVMODE, Address 0x0D)
Bit [7:5] Mnemonic WAV2SEL Default 000 Description Waveform Sample 2 selection for samples mode. WAV2SEL Source 000 Current 001 Voltage 010 Active power multiplier output 011 Reactive power multiplier output 1 100 VA multiplier output 101 Irms LPF output (low 24-bit) 110, 111 Reserved Waveform Sample 1 selection for samples mode. WAV1SEL Source 000 Current 001 Voltage 010 Active power multiplier output 011 Reactive power multiplier output1 100 VA multiplier output 101 Irms LPF output (low 24-bit) 110, 111 Reserved Waveform samples output data rate. DTRT Update Rate (Clock = fCORE/5 = 819.2 kHz) 00 25.6 kSPS (clock/32) 01 12.8 kSPS (clock/64) 10 6.4 kSPS (clock/128) 11 3.2 kSPS (clock/256)
[4:2]
WAV1SEL
000
[1:0]
DTRT
00
1
This function is not available in the ADE5166 and ADE5566.
Table 36. No Load Configuration Register (NLMODE, Address 0x0E)
Bit 7 6 [5:4] Mnemonic DISVARCMP 1 IRMSNOLOAD VANOLOAD Default 0 0 00 Description Setting this bit disables fundamental var gain compensation over line frequency. Logic 1 enables Irms no load threshold detection. The level is defined by the setting of the VANOLOAD bits. Apparent power no load threshold. VANOLOAD Result 00 No load detection disabled 01 No load detection enabled with threshold = 0.030% of full scale 10 No load detection enabled with threshold = 0.015% of full scale 11 No load detection enabled with threshold = 0.0075% of full scale Reactive power no load threshold. VARNOLOAD Result 00 No load detection disabled 01 No load detection enabled with threshold = 0.015% of full scale 10 No load detection enabled with threshold = 0.0075% of full scale 11 No load detection enabled with threshold = 0.0037% of full scale Active power no load threshold. APNOLOAD Result 00 No load detection disabled 01 No load detection enabled with threshold = 0.015% of full scale 10 No load detection enabled with threshold = 0.0075% of full scale 11 No load detection enabled with threshold = 0.0037% of full scale
[3:2]
VARNOLOAD1
00
[1:0]
APNOLOAD
00
1
This function is not available in the ADE5166 and ADE5566.
Rev. B | Page 43 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 37. Accumulation Mode Register (ACCMODE, Address 0x0F)
Bit 7 Mnemonic ICHANNEL 1 Default 0 Description This bit indicates the current channel used to measure energy in antitampering mode. 0 = Channel A (IPA). 1 = Channel B (IPB). Configuration bit to select the event that triggers a fault interrupt. 0 = FAULTSIGN interrupt occurs when the part enters fault mode. 1 = FAULTSIGN interrupt occurs when the part enters normal mode. Configuration bit to select the event that triggers a reactive power sign interrupt. If cleared to 0, a VARSIGN interrupt occurs when reactive power changes from positive to negative. If set to 1, a VARSIGN interrupt occurs when reactive power changes from negative to positive. Configuration bit to select the event that triggers an active power sign interrupt. If cleared to 0, an APSIGN interrupt occurs when active power changes from positive to negative. If set to 1, an APSIGN interrupt occurs when active power changes from negative to positive. Logic 1 enables absolute value accumulation of reactive power in energy register and pulse output. Logic 1 enables reactive power accumulation depending on the sign of the active power. If active power is positive, var is accumulated as it is. If active power is negative, the sign of the var is reversed for the accumulation. This accumulation mode affects both the var registers (VARHR, RVARHR, LVARHR) and the pulse output when connected to the reactive measurement.2 Logic 1 enables positive-only accumulation of active power in energy register and pulse output. Logic 1 enables absolute value accumulation of active power in energy register and pulse output.
6
FAULTSIGN1
0
5
VARSIGN 2
0
4
APSIGN
0
3 2
ABSVARM2 SAVARM2
0 0
1 0
1 2
POAM ABSAM
0 0
This function is not available in the ADE5566 and ADE5569. This function is not available in the ADE5166 and ADE5566.
Table 38. Gain Register (GAIN, Address 0x1B)
Bit [7:5] Mnemonic PGA2 Default 000 Description These bits define the voltage channel input gain. PGA2 Result 000 Gain = 1 001 Gain = 2 010 Gain = 4 011 Gain = 8 100 Gain = 16 Reserved. This bit defines where the CF change of sign detection (APSIGN or VARSIGN) is implemented. CFSIGN_OPT Result 0 Filtered power signal 1 On a per CF pulse basis These bits define the current channel input gain. PGA1 Result 000 Gain = 1 001 Gain = 2 010 Gain = 4 011 Gain = 8 100 Gain = 16
4 3
Reserved CFSIGN_OPT
0 0
[2:0]
PGA1
000
Table 39. Mode 3 Register (MODE3, Address 0x2B)
Bit [7:2] 1 0 Mnemonic Reserved ZX1 ZX2 Default 0 0 0 Description Reserved. Setting this bit enables the zero-crossing output signal on P1.2. Setting this bit enables the zero-crossing output signal on P0.5.
Rev. B | Page 44 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 40. Calibration Mode Register (CALMODE, Address 0x3D) 1
Bit [7:6] [5:4] Mnemonic Reserved SEL_I_CH Default 00 00 Description These bits must be kept at 0 for proper operation. These bits define the current channel used for energy measurements. SEL_I_CH Result 00 Current channel automatically selected by the tampering condition 01 Current channel connected to IPA 10 Current channel connected to IPB 11 Current channel automatically selected by the tampering condition Logic 1 shorts the voltage channel to ground. Logic 1 shorts the current channel to ground. These bits must be kept at 0 for proper operation.
3 2 [1:0]
1
V_CH_SHORT I_CH_SHORT Reserved
0 0 00
This register is not available in the ADE5566 and ADE5569.
INTERRUPT STATUS/ENABLE SFRS
Table 41. Interrupt Status 1 SFR (MIRQSTL, Address 0xDC)
Bit 7 6 5 4 3 2 1 0
1 2
Interrupt Flag ADEIRQFLAG Reserved FAULTSIGN 1 VARSIGN 2 APSIGN VANOLOAD RNOLOAD2 APNOLOAD
Description This bit is set if any of the ADE status flags that are enabled to generate an ADE interrupt is set. This bit is automatically cleared when all of the enabled ADE status flags are cleared. Reserved. Logic 1 indicates that the fault mode has changed according to the configuration of the ACCMODE register. Logic 1 indicates that the reactive power sign has changed according to the configuration of the ACCMODE register. Logic 1 indicates that the active power sign has changed according to the configuration of the ACCMODE register. Logic 1 indicates that an interrupt has been caused by apparent power no load detection. This interrupt is also used to reflect that the part is entering the Irms no load mode. Logic 1 indicates that an interrupt has been caused by reactive power no load detection. Logic 1 indicates that an interrupt has been caused by active power no load detection.
This function is not available in the ADE5566 and ADE5569. This function is not available in the ADE5166 and ADE5566.
Table 42. Interrupt Status 2 SFR (MIRQSTM, Address 0xDD)
Bit 7 6 5 4 3 2 1 0
1
Interrupt Flag CF2 CF1 VAEOF REOF 1 AEOF VAEHF REHF1 AEHF
Description Logic 1 indicates that a pulse on CF2 has been issued. The flag is set even if the CF2 pulse output is not enabled by clearing Bit 2 of the MODE1 register. Logic 1 indicates that a pulse on CF1 has been issued. The flag is set even if the CF1 pulse output is not enabled by clearing Bit 1 of the MODE1 register. Logic 1 indicates that the VAHR register has overflowed. Logic 1 indicates that the VARHR register has overflowed. Logic 1 indicates that the WATTHR register has overflowed. Logic 1 indicates that the VAHR register is half full. Logic 1 indicates that the VARHR register is half full. Logic 1 indicates that the WATTHR register is half full.
This function is not available in the ADE5166 or ADE5566.
Table 43. Interrupt Status 3 SFR (MIRQSTH, Address 0xDE)
Bit 7 6 5 4 3 2 1 0 Interrupt Flag RESET Reserved WFSM PKI PKV CYCEND ZXTO ZX Description Indicates the end of a reset (for both software and hardware reset). Reserved. Logic 1 indicates that new data is present in the waveform registers (Address 0xE2 to Address 0xE7). Logic 1 indicates that the current channel has exceeded the IPKLVL value. Logic 1 indicates that the voltage channel has exceeded the VPKLVL value. Logic 1 indicates the end of the energy accumulation over an integer number of half-line cycles. Logic 1 indicates that no zero crossing on the line voltage occurred for the last ZXTOUT half-line cycles. Logic 1 indicates detection of a zero crossing in the voltage channel.
Rev. B | Page 45 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 44. Interrupt Enable 1 SFR (MIRQENL, Address 0xD9)
Bit [7:6] 5 4 3 2 1 0
1 2
Interrupt Enable Bit Reserved FAULTSIGN 1 VARSIGN 2 APSIGN VANOLOAD RNOLOAD2 APNOLOAD
Description Reserved. When this bit is set to Logic 1, the FAULTSIGN flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the VARSIGN flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the APSIGN flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the VANOLOAD flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the RNOLOAD flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the APNOLOAD flag set creates a pending ADE interrupt to the 8052 core.
This function is not available in the ADE5566 and ADE5569. This function is not available in the ADE5166 and ADE5566.
Table 45. Interrupt Enable 2 SFR (MIRQENM, Address 0xDA)
Bit 7 6 5 4 3 2 1 0
1
Interrupt Enable Bit CF2 CF1 VAEOF REOF 1 AEOF VAEHF REHF1 AEHF
Description When this bit is set to Logic 1, a CF2 pulse creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, a CF1 pulse creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the VAEOF flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the REOF flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the AEOF flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the VAEHF flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the REHF flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the AEHF flag set creates a pending ADE interrupt to the 8052 core.
This function is not available in the ADE5166 and ADE5566.
Table 46. Interrupt Enable 3 SFR (MIRQENH, Address 0xDB)
Bit [7:6] 5 4 3 2 1 0 Interrupt Enable Bit Reserved WFSM PKI PKV CYCEND ZXTO ZX Description Reserved. When this bit is set to Logic 1, the WFSM flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the PKI flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the PKV flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the CYCEND flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the ZXTO flag set creates a pending ADE interrupt to the 8052 core. When this bit is set to Logic 1, the ZX flag set creates a pending ADE interrupt to the 8052 core.
ANALOG INPUTS
Each ADE5166/ADE5169/ADE5566/ADE5569 has two fully differential voltage input channels. The maximum differential input voltage for the VP/VN, IPA/IN, IPB/IN, and IP/IN input pairs is 0.5 V. Each analog input channel has a programmable gain amplifier (PGA) with possible gain selections of 1, 2, 4, 8, and 16. The gain selections are made by writing to the gain register (see Table 38 and Figure 41).
GAIN REGISTER* CURRENT AND VOLTAGE CHANNELS PGA CONTROL 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 0 ADDR: 0x1B
Bit 2 to Bit 0 select the gain for the PGA in the current channel, and Bit 7 to Bit 5 select the gain for the PGA in the voltage channel. Figure 42 shows how a gain selection for the current channel is made using the gain register.
7 0 6 0 5 0 GAIN[7:0] 432 0 0 0 1 0 0 0
GAIN (K) SELECTION
IP, IPx VIN K x VIN
07411-018
PGA2 GAIN SELECT 000 = x1 001 = x2 010 = x4 011 = x8 100 = x16
PGA1 GAIN SELECT 000 = x1 001 = x2 010 = x4 011 = x8 100 = x16
07411-019
IIN
Figure 42. PGA in Current Channel
CFSIGN_OPT RESERVED *REGISTER CONTENTS SHOW POWER-ON DEFAULTS.
Figure 41. Analog Gain Register
Rev. B | Page 46 of 156
ADE5166/ADE5169/ADE5566/ADE5569
ANALOG-TO-DIGITAL CONVERSION
Each ADE5166/ADE5169/ADE5566/ADE5569 has two - analog-to-digital converters (ADCs). The outputs of these ADCs are mapped directly to waveform sampling SFRs (Address 0xE2 to Address 0xE7) and are used for energy measurement internal digital signal processing. In PSM1 (battery) mode and PSM2 (sleep) mode, the ADCs are powered down to minimize power consumption. For simplicity, the block diagram in Figure 44 shows a first-order - ADC. The converter is made up of the - modulator and the digital low-pass filter (LPF). A - modulator converts the input signal into a continuous serial stream of 1s and 0s at a rate determined by the sampling clock. In the ADE5166/ADE5169/ADE5566/ADE5569, the sampling clock is equal to 4.096 MHz/5. The 1-bit DAC in the feedback loop is driven by the serial data stream. The DAC output is subtracted from the input signal. If the loop gain is high enough, the average value of the DAC output (and, therefore, the bit stream) can approach that of the input signal level. For any given input value in a single sampling interval, the data from the 1-bit ADC is virtually meaningless. Only when a large number of samples is averaged is a meaningful result obtained. This averaging is carried into the second part of the ADC, the digital LPF. By averaging a large number of bits from the modulator, the low-pass filter can produce 24-bit data-words that are proportional to the input signal level. The - converter uses two techniques to achieve high resolution from what is essentially a 1-bit conversion technique. The first is oversampling. Oversampling means that the signal is sampled at a rate (frequency) that is many times higher than the bandwidth of interest. For example, the sampling rate in the ADE5166/ ADE5169/ADE5566/ADE5569 is 4.096 MHz/5 (819.2 kHz); and the band of interest is 40 Hz to 2 kHz. Oversampling has the effect of spreading the quantization noise (noise due to sampling) over a wider bandwidth. With the noise spread more thinly over a wider bandwidth, the quantization noise in the band of interest is lowered (see Figure 43).
DIGITAL FILTER ANTIALIASING FILTER (RC) SHAPED NOISE SAMPLING FREQUENCY
SIGNAL
NOISE
0
2
409.6 FREQUENCY (kHz)
819.2
SIGNAL
HIGH RESOLUTION OUTPUT FROM DIGITAL LPF
NOISE
0
2
409.6 FREQUENCY (kHz)
819.2
Figure 43. Noise Reduction Due to Oversampling and Noise Shaping in the Analog Modulator
However, oversampling alone is not efficient enough to improve the signal-to-noise ratio (SNR) in the band of interest. For example, an oversampling ratio of 4 is required to increase the SNR by only 6 dB (one bit). To keep the oversampling ratio at a reasonable level, it is possible to shape the quantization noise so that the majority of the noise lies at the higher frequencies. In the - modulator, the noise is shaped by the integrator, which has a high-pass type of response for the quantization noise. The result is that most of the noise is at the higher frequencies where it can be removed by the digital LPF. This noise shaping is shown in Figure 43.
MCLK/5
ANALOG LOW-PASS FILTER R C + -
INTEGRATOR LATCHED COMPARATOR
DIGITAL LOW-PASS FILTER
24 VREF
1-BIT DAC
Figure 44. First-Order - ADC
Rev. B | Page 47 of 156
07411-020
... 10100101 ...
07411-021
ADE5166/ADE5169/ADE5566/ADE5569
Antialiasing Filter
Figure 44 also shows an analog LPF (RC) on the input to the modulator. This filter is present to prevent aliasing, an artifact of all sampled systems. Aliasing means that frequency components in the input signal to the ADC that are higher than half the sampling rate of the ADC appear in the sampled signal at a frequency below half the sampling rate. Figure 45 illustrates the effect. Frequency components (the black arrows) above half the sampling frequency (also known as the Nyquist frequency, that is, 409.6 kHz) are imaged or folded back down below 409.6 kHz. This happens with all ADCs, regardless of the architecture. In Figure 45, only frequencies near the sampling frequency (819.2 kHz) move into the band of interest for metering (40 Hz to 2 kHz). This allows the use of a very simple LPF to attenuate high frequency (at approximately 819.2 kHz) noise and prevents distortion in the band of interest.
ALIASING EFFECTS
For conventional current sensors, a simple RC filter (single-pole LPF) with a corner frequency of 10 kHz produces an attenuation of approximately 40 dB at 819.2 kHz (see Figure 45). The 20 dB per decade attenuation is usually sufficient to eliminate the effects of aliasing for conventional current sensors. However, for a di/dt sensor such as a Rogowski coil, the sensor has a 20 dB per decade gain. This neutralizes the -20 dB per decade attenuation produced by one simple LPF. Therefore, when using a di/dt sensor, care should be taken to offset the 20 dB per decade gain. One simple approach is to cascade two RC filters to produce the -40 dB per decade attenuation needed.
ADC Transfer Function
Both ADCs in the ADE5166/ADE5169/ADE5566/ADE5569 are designed to produce the same output code for the same input signal level. With a full-scale signal on the input of 0.5 V and an internal reference of 1.2 V, the ADC output code is nominally 2,147,483 or 0x20C49B. The maximum code from the ADC is 4,194,304; this is equivalent to an input signal level of 0.794 V. However, for specified performance, it is recommended that the full-scale input signal level of 0.5 V not be exceeded.
IMAGE FREQUENCIES
SAMPLING FREQUENCY
Current Channel ADC
0 2 409.6 FREQUENCY (kHz) 819.2
Figure 45. ADC and Signal Processing in Current Channel Outline Dimensions
Figure 46 and Figure 47 show the ADC and signal processing chain for the current channel. In waveform sampling mode, the ADC outputs a signed, twos complement, 24-bit data-word at a maximum of 25.6 kSPS (4.096 MHz/160).
Rev. B | Page 48 of 156
07411-022
ADE5166/ADE5169/ADE5566/ADE5569
x1, x2, x4 x8, x16 {GAIN[2:0]} IPA I IN PGA1 ADC HPF MODE1[5] REFERENCE DIGITAL INTEGRATOR* dt CURRENT RMS (I rms) CALCULATION WAVEFORM SAMPLE REGISTER ACTIVE AND REACTIVE POWER CALCULATION
PGA1 V1 0.25V, 0.125V, 62.5mV, 31.3mV 0V IPB
ADC HPF
50Hz 0x342CD0 IBGAIN 0x000000 CURRENT CHANNEL WAVEFORM DATA RANGE 0x28F5C2 0x000000 0xD70A3E 0x2B7850 0x000000 0xD487B0 60Hz 0xCBD330 CURRENT CHANNEL WAVEFORM DATA RANGE AFTER INTEGRATOR (60Hz)
CURRENT CHANNEL WAVEFORM DATA RANGE AFTER INTEGRATOR (50Hz)
ANALOG INPUT RANGE
NOTE THAT THE DIGITAL INTEGRATOR IS NOT AVAILABLE IN THE ADE5166.
Figure 46. ADC and Signal Processing in Current Channel for the ADE5166/ADE5169
x1, x2, x4 x8, x16 {GAIN[2:0]} IP I IN PGA1
MODE1[5] REFERENCE DIGITAL INTEGRATOR* ADC HPF dt
CURRENT RMS (I rms) CALCULATION WAVEFORM SAMPLE REGISTER ACTIVE AND REACTIVE POWER CALCULATION
50Hz V1 0.25V, 0.125V, 62.5mV, 31.3mV 0V 0x28F5C2 ANALOG INPUT RANGE 0x000000 0xD70A3E 0x2B7850 0x000000 0xD487B0 *WHEN THE DIGITAL INTEGRATOR IS ENABLED, FULL-SCALE OUTPUT DATA IS ATTENUATED DEPENDING ON THE SIGNAL FREQUENCY BECAUSE THE INTEGRATOR HAS A -20dB/DECADE FREQUENCY RESPONSE. WHEN DISABLED, THE OUTPUT IS NOT FURTHER ATTENUATED. NOTE THAT THE DIGITAL INTEGRATOR IS NOT AVAILABLE IN THE ADE5566. CURRENT CHANNEL WAVEFORM DATA RANGE 60Hz 0xCBD330 CURRENT CHANNEL WAVEFORM DATA RANGE AFTER INTEGRATOR (60Hz) 0x342CD0 0x000000
CURRENT CHANNEL WAVEFORM DATA RANGE AFTER INTEGRATOR (50Hz)
Figure 47. ADC and Signal Processing in Current Channel for the ADE5566/ADE5569
Rev. B | Page 49 of 156
07411-008
07411-009
*WHEN THE DIGITAL INTEGRATOR IS ENABLED, FULL-SCALE OUTPUT DATA IS ATTENUATED DEPENDING ON THE SIGNAL FREQUENCY BECAUSE THE INTEGRATOR HAS A -20dB/DECADE FREQUENCY RESPONSE. WHEN DISABLED, THE OUTPUT IS NOT FURTHER ATTENUATED.
ADE5166/ADE5169/ADE5566/ADE5569
Voltage Channel ADC
Figure 48 shows the ADC and signal processing chain for the voltage channel. In waveform sampling mode, the ADC outputs a signed, twos complement, 24-bit data-word at a maximum of 25.6 kSPS (MCLK/160). The ADC produces an output code that is approximately between 0x28F5 (+10,485d) and 0xD70B (-10,485d). When in waveform sampling mode, one of four output sample rates can be chosen by using the two DTRT bits of the WAVMODE register (Address 0x0D[1:0]), as shown in Table 35. The output sample rate can be 25.6 kSPS, 12.8 kSPS, 6.4 kSPS, or 3.2 kSPS. If the WFSM enable bit is set in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB), the 8052 core has a pending ADE interrupt. The sampled signals selected in the WAVMODE register are latched into the waveform SFRs when the waveform high byte (WAV1H or WAV2H) is read. The ADE interrupt stays active until the WFSM status bit is cleared (see the Energy Measurement Interrupts section).
Channel Sampling
The waveform samples of the current ADC and voltage ADC can also be routed to the waveform registers to be read by the MCU core. The active, reactive, and apparent power and energy calculation remain uninterrupted during waveform sampling.
x1, x2, x4, x8, x16 {GAIN[7:5]}
REFERENCE
ACTIVE AND REACTIVE POWER CALCULATION
VP V2 VN 0.5V, 0.25V, 0.125V, 62.5mV, 31.3mV V2
HPF PGA2 ADC
VOLTAGE RMS (Vrms) CALCULATION
WAVEFORM SAMPLE REGISTER VOLTAGE PEAK DETECT ZX DETECTION
0V
VOLTAGE CHANNEL WAVEFORM DATA RANGE ANALOG INPUT RANGE 0x28F5 0x0000
f-3dB = 63.7Hz
LPF1
ZX SIGNAL DATA RANGE FOR 60Hz SIGNAL 0x1DD0 0x0000 0xE230
MODE1[6]
0xD70B
ZX SIGNAL DATA RANGE FOR 50Hz SIGNAL 0x2037 0x0000 0xDFC9
07411-024
Figure 48. ADC and Signal Processing in Voltage Channel
Rev. B | Page 50 of 156
ADE5166/ADE5169/ADE5566/ADE5569
FAULT DETECTION (ADE5166/ADE5169 ONLY)
The ADE5166/ADE5169 incorporate a fault detection scheme that warns of fault conditions and allows accurate measurement to continue during a fault event. (This feature is not available in the ADE5566/ADE5569.) The ADE5166/ADE5169 do this by continuously monitoring both current inputs (IPA and IPB). For ease of understanding, these currents are referred to as phase and neutral (return) currents. In the ADE5166/ADE5169, a fault condition is defined when the difference between IPA and IPB is greater than 6.25% of the active channel caused by amplitude or phase. If a fault condition is detected and the inactive channel is larger than the active channel, the ADE5166/ ADE5169 automatically switch current measurement to the inactive channel. During a fault, the active, reactive, and apparent power and the Irms are generated using the larger of the two cur-rents. On power-up, IPA is the current input selected for active, reactive, and apparent power and Irms calculations. To prevent a false alarm, averaging is done for the fault detection, and a fault condition is detected approximately one second after the event. The fault detection is automatically disabled when the voltage signal is less than 0.3% of the full-scale input range. This eliminates false detection of a fault due to noise at light loads. Because the ADE5166/ADE5169 look for a difference between the voltage signals on IPA and IPB, it is important that both current transducers be closely matched.
Fault with Active Input Greater Than Inactive Input
If IPA is the active current input (that is, IPA is being used for billing), and the voltage signal on IPB (inactive input) falls below 93.75% of IPA, and the FAULTSIGN bit (Bit 6) of the ACCMODE register (Address 0x0F) is cleared, the FAULTSIGN flag (Bit 5) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set. Both analog inputs are filtered and averaged to prevent false triggering of this logic output. As a consequence of the filtering, there is a time delay of approximately 3 sec on the logic output after the fault event. The FAULTSIGN flag is independent of any activity. Because IPA is the active input and it is still greater than IPB, billing is maintained on IPA; that is, no swap to the IPB input occurs. IPA remains the active input.
Fault with Inactive Input Greater Than Active Input
If the difference between IPB (the inactive input) and IPA (the active input that is being used for billing) becomes greater than 6.25% of IPB, and the FAULTSIGN bit (Bit 6) in the ACCMODE register (Address 0x0F) is cleared, the FAULTSIGN flag (Bit 5) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set. The IPB analog input becomes the active input. Again, a time constant of about 3 sec is associated with this swap. IPA does not swap back to the active channel until IPA is greater than IPB and the difference between IPA and IPB, in this order, becomes greater than 6.25% of IPB. However, if the FAULTSIGN bit (Bit 6) in the ACCMODE register (Address 0x0F) is set, the FAULTSIGN flag (Bit 5) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set as soon as IPA is within 6.25% of IPB. This threshold eliminates concerns about potential chatter between IPA and IPB calibration.
Channel Selection Indication
The current channel selected for measurement is indicated by the ICHANNEL bit (Bit 7) in the ACCMODE register (Address 0x0F). When Bit 7 is cleared, IPA is selected; when Bit 7 is set, IPB is selected. The ADE5166/ADE5169 automatically switch from one channel to the other and report the channel configuration in the ACCMODE register. The current channel selected for measurement can also be forced. Setting the SEL_I_CH bits (Bits[5:4]) in the CALMODE register (Address 0x3D) to 01 or 10 selects IPA and IPB, respectively. When both bits are cleared or set, the current channel used for measurement is selected automatically, based on the fault detection.
Calibration Concerns
Typically, when a meter is calibrated, the voltage and current circuits are separated (see Figure 49). Current passes through only the phase circuit or the neutral circuit. Figure 49 shows current being passed through the phase circuit. This is the preferred option because the ADE5166/ADE5169 start billing on the IPA input on power-up. The phase circuit, CT, is connected to IPA in the diagram. Because the current sensors are not perfectly matched, it is important to match current inputs. The ADE5166/ADE5169 provide a gain calibration register for IPB, IBGAIN (Address 0x1C). IBGAIN is a 12-bit, signed, twos complement register that provides a gain resolution of 0.0244%/LSB.
IPB 0 CT RB AGND TEST CURRENT RB CT RA RF CF RF CT 0V RF VP VN +
07411-025
Fault Indication
The ADE5166/ADE5169 provide an indication of the part going into or out of a fault condition. The new fault condition is indicated by the FAULTSIGN flag (Bit 5) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC). When the FAULTSIGN bit (Bit 6) in the ACCMODE register (Address 0x0F) is cleared, the FAULTSIGN flag in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set when the part is entering a fault condition or a normal condition. When the FAULTSIGN bit (Bit 5) is set in the Interrupt Enable 1 SFR (MIRQENL, Address 0xD9) and the FAULTSIGN flag (Bit 5) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set, the 8052 core has a pending ADE interrupt.
RF VA
CF
IPA IN
+ -
NEUTRAL
CF IB
PHASE
+ -
V 240V rms
-
Figure 49. Fault Conditions for Inactive Input Greater Than Active Input
Rev. B | Page 51 of 156
ADE5166/ADE5169/ADE5566/ADE5569
For calibration, a first measurement should be done on IPA by setting the SEL_I_CH bits (Bits[5:4]) to 0b01 in the CALMODE register (Address 0x3D). This measurement should be compared to the measurement on IPB. Measuring IPB can be forced by setting the SEL_I_CH bits (Bits[5:4]) to 0b10 in the CALMODE register (Address 0x3D). The gain error between these two measurements can be evaluated using the following equation: Error (%) =
Measurement (I PB ) - Measurement (I PA ) Measurement (I PA )
-40 10 0
-10
GAIN (dB)
-20
-30
The two channels, IPA and IPB, can then be matched by writing -Error(%)/(1 + Error(%)) x 212 to the IBGAIN register (Address 0x1C). This matching adjustment is valid for all energy measurements made by the ADE5166/ADE5169, including active power, reactive power (the ADE5169 only), apparent power, and Irms.
100 FREQUENCY (Hz)
1000
Figure 51. Combined Gain Response of the Digital Integrator and Phase Compensator
-88.0
di/dt CURRENT SENSOR AND DIGITAL INTEGRATOR (ADE5169/ADE5569 ONLY)
PHASE (Degrees)
The di/dt sensor, a feature available for the ADE5169/ADE5569, detects changes in the magnetic field caused by ac currents. Figure 50 shows the principle of a di/dt current sensor.
-88.5
-89.0
-89.5
MAGNETIC FIELD CREATED BY CURRENT (DIRECTLY PROPORTIONAL TO CURRENT)
-90.0
07411-026
+ EMF (ELECTROMOTIVE FORCE) - INDUCED BY CHANGES IN MAGNETIC FLUX DENSITY (di/dt)
102 FREQ FREQUENCY (Hz)
103
Figure 50. Principle of a di/dt Current Sensor
Figure 52. Combined Phase Response of the Digital Integrator and Phase Compensator
-1.0 -1.5 -2.0 -2.5
GAIN (dB)
The flux density of a magnetic field induced by a current is directly proportional to the magnitude of the current. The changes in the magnetic flux density passing through a conductor loop generate an electromotive force (EMF) between the two ends of the loop. The EMF is a voltage signal that is proportional to the di/dt of the current. The voltage output from the di/dt current sensor is determined by the mutual inductance between the current-carrying conductor and the di/dt sensor. The current signal needs to be recovered from the di/dt signal before it can be used. An integrator is, therefore, necessary to restore the signal to its original form. The ADE5169/ADE5569 has a built-in digital integrator to recover the current signal from the di/dt sensor. The digital integrator on the current channel is switched off by default when the ADE5169/ADE5569 is powered up. Setting the INTE bit (Bit 5) in the MODE1 register (Address 0x0B) turns on the integrator. Figure 51 to Figure 54 show the gain and phase response of the digital integrator.
-3.0 -3.5 -4.0 -4.5 -5.0 -5.5 45 50 55 60 FREQUENCY (Hz) 65 70
07411-029
-6.0 40
Figure 53. Combined Gain Response of the Digital Integrator and Phase Compensator (40 Hz to 70 Hz)
Rev. B | Page 52 of 156
07411-106
-90.5
07411-027
-50
ADE5166/ADE5169/ADE5566/ADE5569
-89.70 -89.75 -89.80
PHASE (Degrees)
the analog input signal, V2, and the output of LPF1. The phase lag response of LPF1 results in a time delay of approximately 2 ms (at 60 Hz) between the zero crossing on the analog inputs of the voltage channel and ZX detection.
x1, x2, x4, x8, x16 VP V2 {GAIN[7:5]} PGA2 VN ZERO CROSSING LPF1 f-3dB = 63.7Hz
45 50 55 60 FREQUENCY (Hz) 65 70
07411-030
-89.85 -89.90 -89.95 -90.00 -90.05
REFERENCE
HPF
ADC 2
ZX
40
MODE1[6] 1.0 0.73 43.24 @ 60Hz ZX
Figure 54. Combined Phase Response of the Digital Integrator and Phase Compensator (40 Hz to 70 Hz)
Note that the integrator has a -20 dB/dec attenuation and an approximately -90 phase shift. When combined with a di/dt sensor, the resulting magnitude and phase response should be a flat gain over the frequency band of interest. The di/dt sensor has a 20 dB/dec gain associated with it. It also generates significant high frequency noise. Therefore, a more effective antialiasing filter is needed to avoid noise due to aliasing (see the Antialiasing Filter section). When the digital integrator is switched off, the ADE5169/ADE5569 can be used directly with a conventional current sensor, such as a current transformer (CT), or with a low resistance current shunt.
V2
LPF1
Figure 55. Zero-Crossing Detection on the Voltage Channel
The zero-crossing detection also drives the ZX flag in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE). If the ZX bit (Bit 0) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB) is set, the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the ZX status bit is cleared (see the Energy Measurement Interrupts section).
POWER QUALITY MEASUREMENTS
Zero-Crossing Detection
Each ADE5166/ADE5169/ADE5566/ADE5569 has a zerocrossing detection circuit on the voltage channel. This external zero-crossing signal can be output on P0.5 and P1.2 (see Table 39). It is also used in calibration mode. The zero crossing is generated by default from the output of LPF1. This filter has a low cutoff frequency and is intended for 50 Hz and 60 Hz systems. If needed, this filter can be disabled to allow a higher frequency signal to be detected or to limit the group delay of the detection. If the voltage input fundamental frequency is below 60 Hz, and a time delay in ZX detection is acceptable, it is recommended that LPF1 be enabled. Enabling LPF1 limits the variability in the ZX detection by eliminating the high frequency components. Figure 55 shows how the zero-crossing signal is generated. The zero-crossing signal, ZX, is generated from the output of LPF1 (bypassed or not). LPF1 has a single pole at 63.7 Hz (at MCLK = 4.096 MHz). As a result, there is a phase lag between
Zero-Crossing Timeout
The zero-crossing detection also has an associated timeout register, ZXTOUT. This unsigned, 12-bit register is decremented (1 LSB) every 160/MCLK sec. The register is reset to its userprogrammed, full-scale value every time a zero crossing is detected on the voltage channel. The default power-on value in this register is 0xFFF. If the internal register decrements to 0 before a zero crossing is detected in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE) and the ZXTO bit (Bit 1) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB) is set, the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the ZXTO status bit is cleared (see the Energy Measurement Interrupts section). The ZXTOUT register (Address 0x11) can be written to or read by the user (see the Energy Measurement Registers section). The resolution of the register is 160/MCLK sec per LSB. Thus, the maximum delay for an interrupt is 0.16 sec (1/MCLK x 212) when MCLK = 4.096 MHz.
Rev. B | Page 53 of 156
07411-031
ADE5166/ADE5169/ADE5566/ADE5569
Figure 56 shows the mechanism of the zero-crossing timeout detection when the line voltage stays at a fixed dc level for more than MCLK/160 x ZXTOUT seconds.
12-BIT INTERNAL REGISTER VALUE ZXTOUT
Line Voltage SAG Detection
In addition to detection of the loss of the line voltage signal (zero crossing), the ADE5166/ADE5169/ADE5566/ADE5569 can also be programmed to detect when the absolute value of the line voltage drops below a certain peak value for a number of line cycles. This condition is illustrated in Figure 57.
VOLTAGE CHANNEL FULL SCALE
VOLTAGE CHANNEL
SAGLVL[15:0]
07411-032
ZXTO FLAG BIT
SAG FLAG
SAGCYC[7:0] = 0x04 3 LINE CYCLES
SAG IS RESET LOW WHEN VOLTAGE CHANNEL EXCEEDS SAGLVL[15:0] AND SAG FLAG IS RESET
07411-033
Figure 56. Zero-Crossing Timeout Detection
Period or Frequency Measurements
The ADE5166/ADE5169/ADE5566/ADE5569 provide the period or frequency measurement of the line. The period or frequency measurement is selected by clearing or setting the FREQSEL bit (Bit 1) in the MODE2 register (Address 0x0C). The period/ frequency register, PER_FREQ (Address 0x0A), is an unsigned 16-bit register that is updated every period. If LPF1 is enabled, a settling time of 1.8 sec is associated with this filter before the measurement is stable. When the period measurement is selected, the measurement has a 2.44 s/LSB (4.096 MHz/10) resolution, which represents 0.014% when the line frequency is 60 Hz. When the line frequency is 60 Hz, the value of the period register is approximately 0d6827. The length of the register enables the measurement of line frequencies as low as 12.5 Hz. The period register is stable at 1 LSB when the line is established and the measurement does not change. When the frequency measurement is selected, the measurement has a 0.0625 Hz/LSB resolution when MCLK = 4.096 MHz, which represents 0.104% when the line frequency is 60 Hz. When the line frequency is 60 Hz, the value of the frequency register is 0d960. The frequency register is stable at 4 LSB when the line is established and the measurement does not change.
Figure 57. SAG Detection
Figure 57 shows the line voltage falling below a threshold that is set in the SAG level register (SAGLVL, Address 0x14[15:0]) for three line cycles. The quantities 0 and 1 are not valid for the SAGCYC register, and the contents represent one more than the desired number of full line cycles. For example, when the SAG cycle register (SAGCYC, Address 0x13[7:0]) contains 0x04, FSAG (Bit 5) in the power management interrupt flag SFR (IPSMF, Address 0xF8) is set at the end of the third line cycle after the line voltage falls below the threshold. If the SAG enable bit (ESAG, Bit 5) in the power management interrupt enable SFR (IPSME, Address 0xEC) is set, the 8052 core has a pending power supply management interrupt. The PSM interrupt stays active until the ESAG bit is cleared (see the Power Supply Management (PSM) Interrupt section). In Figure 57, the SAG flag (FSAG) is set on the fifth line cycle after the signal on the voltage channel first drops below the threshold level.
SAG Level Set
The 2-byte contents of the SAG level register (SAGLVL, Address 0x14) are compared to the absolute value of the output from LPF1. Therefore, when LPF1 is enabled, writing 0x2038 to the SAG level register puts the SAG detection level at full scale (see Figure 57). Writing 0x00 or 0x01 puts the SAG detection level at 0. The SAG level register is compared to the input of the ZX detection, and detection is made when the ZX input falls below the contents of the SAG level register.
Rev. B | Page 54 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Peak Detection
The ADE5166/ADE5169/ADE5566/ADE5569 can be programmed to detect when the absolute value of the voltage or current channel exceeds a specified peak value. Figure 58 illustrates the behavior of the peak detection for the voltage channel. Both voltage and current channels are monitored at the same time.
V2
Peak Level Record
Each ADE5166/ADE5169/ADE5566/ADE5569 records the maximum absolute value reached by the current and voltage channels in two different registers, IPEAK (Address 0x17) and VPEAK (Address 0x19), respectively. Each register is a 24-bit, unsigned register that is updated each time that the absolute value of the waveform sample from the corresponding channel is above the value stored in the IPEAK or VPEAK register. The contents of the IPEAK and VPEAK registers represent the maximum absolute value observed on the current and voltage channel input, respectively. Reading the RSTIPEAK (Address 0x18) and RSTVPEAK (Address 0x1A) registers clears their respective contents after the read operation.
VPKLVL[15:0]
PKV RESET LOW WHEN MIRQSTH SFR IS READ
PKV INTERRUPT FLAG RESET BIT PKV IN MIRQSTH SFR
07411-034
PHASE COMPENSATION
The ADE5166/ADE5169/ADE5566/ADE5569 must work with transducers that can have inherent phase errors. For example, a phase error of 0.1 to 0.3 is not uncommon for a current transformer (CT). These phase errors can vary from part to part, and they must be corrected to perform accurate power calculations. The errors associated with phase mismatch are particularly noticeable at low power factors. The ADE5166/ADE5169/ADE5566/ ADE5569 provide a means of digitally calibrating these small phase errors. The part allows a small time delay or time advance to be introduced into the signal processing chain to compensate for small phase errors. Because the compensation is in time, this technique should be used only for small phase errors in the range of 0.1 to 0.5. Correcting large phase errors using a time shift technique may introduce significant phase errors at higher harmonics. The phase calibration register (PHCAL[7:0], Address 0x10) is a twos complement, signed, single-byte register that has values ranging from 0x82 (-126d) to 0x68 (+104d). The PHCAL register is centered at 0x40, meaning that writing 0x40 to the register gives 0 delay. By changing this register, the time delay in the voltage channel signal path can change from -231.93 s to +48.83 s (MCLK = 4.096 MHz). One LSB is equivalent to a 1.22 s (4.096 MHz/5) time delay or advance. A line frequency of 60 Hz gives a phase resolution of 0.026 at the fundamental (that is, 360 x 1.22 s x 60 Hz).
Figure 58. Peak Level Detection
Figure 58 shows a line voltage exceeding a threshold that is set in the voltage peak register (VPKLVL, Address 0x16[15:0]). The voltage peak event is recorded by setting the PKV flag (Bit 3) in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE). If the PKV enable bit (Bit 3) is set in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB), the 8052 core has a pending ADE interrupt. Similarly, the current peak event is recorded by setting the PKI flag (Bit 4) in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE). The ADE interrupt stays active until the PKV or PKI status bit is cleared (see the Energy Measurement Interrupts section).
Peak Level Set
The contents of the VPKLVL register (Address 0x16) and the IPKLVL register (Address 0x15) are compared to the absolute value of the voltage and two MSBs of the current channel, respectively. Thus, for example, the nominal maximum code from the current channel ADC with a full-scale signal is 0x28F5C2 (see the Current Channel ADC section). Therefore, writing 0x28F5 to the IPKLVL register puts the current channel peak detection level at full scale and sets the current peak detection to its least sensitive value. Writing 0x00 puts the current channel detection level at 0. The detection is done by comparing the contents of the IPKLVL register to the incoming current channel sample. The PKI flag (Bit 4) in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE) indicates that the peak level is exceeded. If the PKI bit (Bit 4) or the PKV bit (Bit 3) is set in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB), the 8052 core has a pending ADE interrupt.
Rev. B | Page 55 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Figure 59 illustrates how the phase compensation is used to remove a 0.1 phase lead in the current channel due to the external transducer. To cancel the lead (0.1) in the current channel, a phase lead must also be introduced into the voltage channel. The resolution of the phase adjustment allows the introduction of a phase lead in increments of 0.026. The phase lead is achieved by introducing a time advance into the voltage channel. A time advance of 4.88 s is made by writing -4 (0x3C) to the time delay block, thus reducing the amount of time delay by 4.88 s, or equivalently, a phase lead of approximately 0.1 at a line frequency of 60 Hz (0x3C represents -4 because the register is centered with 0 at 0x40).
IP/IPA I IN PGA1 ADC 1 24 LPF2 HPF 24 V 2 (t ) = V 2 - V 2 cos(2t) V (t ) = 2 x V sin(t ) LPF3 INPUT V
07411-036
V 2 (t) = V 2
Figure 60. RMS Signal Processing
The Irms signal can be read from the waveform register by setting the WAVMODE register (Address 0x0D) and setting the WFSM bit (Bit 5) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB). Like the current and voltage channels waveform sampling modes, the waveform data is available at sample rates of 25.6 kSPS, 12.8 kSPS, 6.4 kSPS, and 3.2 kSPS. It is important to note that when the current input is larger than 40% of full scale, the Irms waveform sample register does not represent the true processed rms value. The rms value processed with this level of input is larger than the 24-bit read by the waveform register, making the value read truncated on the high end.
VP V VN V 0.1 I PGA2 ADC 2
1
DELAY BLOCK 1.22s/LSB 7 0
CHANNEL 2 DELAY REDUCED BY 4.88s (0.1LEAD AT 60Hz) 0x3C IN PHCAL[7:0] V I
1 0010111 PHCAL[7:0] -231.93s TO +48.83s
Current Channel RMS Calculation
Each ADE5166/ADE5169/ADE5566/ADE5569 simultaneously calculates the rms values for the current and voltage channels in different registers. Figure 61 and Figure 62 show the detail of the signal processsing chain for the rms calculation on the current channel. The current channel rms value is processed from the samples used in the current channel waveform sampling mode and is stored in the unsigned, 24-bit IRMS SFRs (IRMSL, Address 0xD4; IRMSM, Address 0xD5; and IRMSH, Address 0xD6). One LSB of the current channel rms register (IRMSL, IRMSM, and IRMSH) is equivalent to 1 LSB of a current channel waveform sample. The update rate of the current channel rms measurement is 4.096 MHz/5. To minimize noise in the reading of the register, the Irms register can also be configured to update only with the zero crossing of the voltage input. This configuration is done by setting the ZXRMS bit (Bit 2) in the MODE2 register (Address 0x0C). With the different specified full-scale analog input values, the ADC produces an output code that is approximately 0d2,684,354 (see the Current Channel ADC section). Similarly, the equivalent rms value of a full-scale ac signal is 0d1,898,124 (0x1CF68C). The current rms measurement provided in the ADE5166/ ADE5169/ADE5566/ADE5569 is accurate to within 0.5% for signal inputs between full scale and full scale/500. The conversion from the register value to amps must be done externally in the microprocessor using an amps/LSB constant.
60Hz
Figure 59. Phase Calibration
RMS CALCULATION
The root mean square (rms) value of a continuous signal, V(t), is defined as
Vrms 1 = x V 2 (t ) dt T
0 T
(1)
For time sampling signals, rms calculation involves squaring the signal, taking the average, and obtaining the square root. The ADE5166/ADE5169/ADE5566/ADE5569 implement this method by serially squaring the input, averaging the results, and then taking the square root of the average. The averaging part of this signal processing is done by implementing a low-pass filter (LPF3 in Figure 60, Figure 61, Figure 62, and Figure 63). This LPF has a -3 dB cutoff frequency of 2 Hz when MCLK = 4.096 MHz.
V (t ) = 2 x V sin(t ) where V is the rms voltage. (2)
07411-035
60Hz
V 2 (t ) = V 2 - V 2 cos(2t )
(3)
Current Channel RMS Offset Compensation
The ADE5166/ADE5169/ADE5566/ADE5569 incorporate a current channel rms offset compensation register (IRMSOS). This is a 12-bit, signed register that can be used to remove offset in the current channel rms calculation. An offset can exist in the rms calculation due to input noises that are integrated into the dc component of V2(t).
When this signal goes through LPF3, the cos(2t) term is attenuated and only the dc term, Vrms2 (shown as V2 in Figure 60), goes through.
Rev. B | Page 56 of 156
ADE5166/ADE5169/ADE5566/ADE5569
One LSB of the current channel rms offset is equivalent to 16,384 LSBs of the square of the current channel rms register. Assuming that the maximum value from the current channel rms calculation is 0d1,898,124 with full-scale ac inputs, then 1 LSB of the current channel rms offset represents 0.23% of measurement error at -60 dB down from full scale.
I rms = I rms 0 2 + IRMSOS x 32,768
(4)
where Irms0 is the rms measurement without offset correction.
60Hz
CURRENT CHANNEL WAVEFORM DATA RANGE WITH INTEGRATOR ON (60Hz)
0x2B7850 0x000000 0xD487B0
MODE1[5] IPA HPF DIGITAL INTEGRATOR* dt
IRMSOS[11:0] sgn 225 226 227 HPF1 LPF3 218 217 216
Irms(t)
0x00
24
+
24
Irms[23:0]
IPB
HPF
IBGAIN
CURRENT CHANNEL WAVEFORM DATA RANGE WITH INTEGRATOR OFF 0x28F5C2 0x000000 0xD70A3E
07411-057
*NOTE THAT THE DIGITAL INTEGRATOR IS NOT AVAILABLE IN THE ADE5166.
Figure 61. ADE5166/ADE5169 Current Channel RMS Signal Processing with PGA1 = 2, 4, 8, or 16
CURRENT CHANNEL WAVEFORM DATA RANGE WITH INTEGRATOR ON (60Hz)
60Hz
0x2B7850 0x000000 0xD487B0
MODE1[5] IP HPF DIGITAL INTEGRATOR* dt
IRMSOS[11:0] sgn 225 226 227 HPF1 LPF3 218 217 216
Irms(t)
0x00
24
+
24
Irms[23:0]
CURRENT CHANNEL WAVEFORM DATA RANGE WITH INTEGRATOR OFF 0x28F5C2 0x000000 0xD70A3E *NOTE THAT THE DIGITAL INTEGRATOR IS NOT AVAILABLE IN THE ADE5566.
Figure 62. ADE5566/ADE5569 Current Channel RMS Signal Processing with PGA1 = 2, 4, 8, or 16
Rev. B | Page 57 of 156
07411-059
ADE5166/ADE5169/ADE5566/ADE5569
VOLTAGE SIGNAL (V(t)) 0x28F5 0x0 0xD70B LPF1 VOLTAGE CHANNEL |X| LPF3 + VRMSOS[11:0] sgn 216 215 28 27 26 +
Vrms(t)
0x00 Vrms[23:0]
0x28F5C2
07411-038
Figure 63. Voltage Channel RMS Signal Processing
Voltage Channel RMS Calculation
Figure 63 shows details of the signal processing chain for the rms calculation on the voltage channel. This voltage rms estimation is done in the ADE5166/ADE5169/ADE5566/ADE5569 using the mean absolute value calculation, as shown in Figure 63. The voltage channel rms value is processed from the samples used in the voltage channel waveform sampling mode and is stored in the unsigned 24-bit VRMS SFRs (VRMSL, Address 0xD1; VRMSM, Address 0xD2; and VRMSH, Address 0xD3). The update rate of the voltage channel rms measurement is MCLK/5. To minimize noise in the reading of the register, the VRMS SFRs can also be configured to update only with the zero crossing of the voltage input. This configuration is done by setting the ZXRMS bit (Bit 2) in the MODE2 register (Address 0x0C). With the specified full-scale ac analog input signal of 0.5 V, the output from the LPF1 in Figure 63 swings between 0x28F5 and 0xD70B at 60 Hz (see the Voltage Channel ADC section). The equivalent rms value of this full-scale ac signal is approximately 0d1,898,124 (0x1CF68C) in the VRMS SFRs. The voltage rms measurement provided in the ADE5166/ADE5169/ADE5566/ ADE5569 is accurate to within 0.5% for signal input between full scale and full scale/20. The conversion from the register value to volts must be done externally in the microprocessor using a V/LSB constant.
64 LSBs of the voltage channel rms register. Assuming that the maximum value from the voltage channel rms calculation is 0d1,898,124 with full-scale ac inputs, then 1 LSB of the voltage channel rms offset represents 3.37% of measurement error at -60 dB down from full scale. Vrms = Vrms0 + 64 x VRMSOS where Vrms0 is the rms measurement without offset correction. (5)
ACTIVE POWER CALCULATION
Active power is defined as the rate of energy flow from source to load. It is the product of the voltage and current waveforms. The resulting waveform is called the instantaneous power signal and is equal to the rate of energy flow at every instant of time. The unit of power is the watt or joules/second. Equation 8 gives an expression for the instantaneous power signal in an ac system. V (t ) = 2 x V sin(t ) I (t ) = 2 x I sin(t ) where: V is the rms voltage. I is the rms current. P(t) = V(t) x I(t) (6) (7)
P (t ) = VI - VI cos(2t )
(8)
Voltage Channel RMS Offset Compensation
The ADE5166/ADE5169/ADE5566/ADE5569 incorporate the voltage channel rms offset compensation register (VRMSOS, Address 0x23). This 12-bit, signed register can be used to remove offset in the voltage channel rms calculation. An offset can exist in the rms calculation due to input noises and dc offset in the input samples. One LSB of the voltage channel rms offset is equivalent to
The average power over an integral number of line cycles (n) is given by the expression in Equation 9.
P= 1 nT
0
nT
P (t )dt = VI
(9)
where: T is the line cycle period. P is referred to as the active or real power.
Rev. B | Page 58 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Note that the active power is equal to the dc component of the instantaneous power signal, P(t), in Equation 9, that is, VI. This is the relationship used to calculate active power in the ADE5166/ ADE5169/ADE5566/ADE5569. The instantaneous power signal, P(t), is generated by multiplying the current and voltage signals. The dc component of the instantaneous power signal is then extracted by LPF2 (low-pass filter) to obtain the active power information (see Figure 64).
INSTANTANEOUS POWER SIGNAL 0x19999A ACTIVE REAL POWER SIGNAL = V x I P(t) = V x I - V x I x cos(2t)
Because LPF2 does not have an ideal brick wall frequency response (see Figure 65), the active power signal has some ripple due to the instantaneous power signal. This ripple is sinusoidal and has a frequency equal to 2x the line frequency. Because of its sinusoidal nature, the ripple is removed when the active power signal is integrated to calculate energy (see the Active Energy Calculation section).
0
-4
ATTENUATION (dB)
CURRENT I(t) = 2 x I x sin(t) VOLTAGE V(t) = 2 x V x sin(t)
07411-039
-8
VI 0xCCCCD
-12
-16
0x00000
-20
1
3
10 FREQUENCY (Hz)
30
100
Figure 64. Active Power Calculation
Figure 65. Frequency Response of LPF2
Rev. B | Page 59 of 156
07411-040
-24
ADE5166/ADE5169/ADE5566/ADE5569
Active Power Gain Calibration
Figure 66 shows the signal processing chain for the active power calculation in the ADE5166/ADE5169/ADE5566/ADE5569. As explained previously, the active power is calculated by filtering the output of the multiplier with a low-pass filter. Note that, when reading the waveform samples from the output of LPF2, the gain of the active energy can be adjusted by using the multiplier and writing a twos complement, 12-bit word to the the watt gain register (WGAIN, Address 0x1D[11:0]). Equation 10 shows how the gain adjustment is related to the contents of the watt gain register.
Active Power Sign Detection
The ADE5166/ADE5169/ADE5566/ADE5569 can detect a change of sign in the active power. The APSIGN flag (Bit 3) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) records that a change of sign has occurred according to the APSIGN bit (Bit 4) in the ACCMODE register (Address 0x0F). If the APSIGN flag (Bit 3) is set in the Interrupt Enable 1 SFR (MIRQENL, Address 0xD9), the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the APSIGN status bit is cleared (see the Energy Measurement Interrupts section). When the APSIGN bit (Bit 4) in the ACCMODE register (Address 0x0F) is cleared (default), a transition from positive to negative active power sets the APSIGN flag (Bit 3) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC). When the APSIGN bit (Bit 4) in the ACCMODE register (Address 0x0F) is set, the APSIGN flag (Bit 3) in the MIRQSTL SFR (Address 0xDC) is set when a transition from negative to positive active power occurs.
WGAIN Output WGAIN = Active Power x 1 + 212
(10)
For example, when 0x7FF is written to the watt gain register, the power output is scaled up by 50% (0x7FF = 2047d, 2047/212 = 0.5). Similarly, 0x800 = -2048d (signed, twos complement), and power output is scaled by -50%. Each LSB scales the power output by 0.0244%. The minimum output range is given when the watt gain register contents are equal to 0x800, and the maximum output range is given by writing 0x7FF to the watt gain register. This register can be used to calibrate the active power (or energy) calculation in the ADE5166/ADE5169/ADE5566/ADE5569.
Active Power No Load Detection
The ADE5166/ADE5169/ADE5566/ADE5569 include a no load threshold feature on the active power that eliminates any creep effects in the meter. The part accomplishes this by not accumulating energy if the multiplier output is below the no load threshold. When the active power is below the no load threshold, the APNOLOAD flag (Bit 0) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set. If the APNOLOAD bit (Bit 0) is set in the Interrupt Enable 1 SFR (MIRQENL, Address 0xD9), the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the APNOLOAD status bit is cleared (see the Energy Measurement Interrupts section). The no load threshold level can be selected by setting the APNOLOAD bits (Bits[1:0]) in the NLMODE register (Address 0x0E). Setting these bits to 0b00 disables the no load detection; setting them to 0b01, 0b10, or 0b11 sets the no load detection threshold to 0.015%, 0.0075%, or 0.0037% of the multiplier full-scale output frequency, respectively. The IEC 62053-21 specification states that the meter must start up with a load of 0.4% IPB, which translates to 0.0167% of the full-scale output frequency of the multiplier.
Active Power Offset Calibration
The ADE5166/ADE5169/ADE5566/ADE5569 also incorporate an active power offset register (WATTOS, Address 0x20[15:0]). It is a signed, twos complement, 16-bit register that can be used to remove offsets in the active power calculation (see Figure 66). An offset can exist in the power calculation due to crosstalk between channels on the PCB or in the IC itself. The offset calibration allows the contents of the active power register to be maintained at 0 when no power is being consumed. The 256 LSBs (WATTOS = 0x0100) written to the active power offset register are equivalent to 1 LSB in the waveform sample register. Assuming the average value, output from LPF2 is 0xCCCCD (838,861d) when inputs on the voltage and current channels are both at full scale. At -60 dB down on the current channel (1/1000 of the current channel full-scale input), the average word value output from LPF2 is 838.861 (838,861/1000). One LSB in the LPF2 output has a measurement error of 1/838.861 x 100% = 0.119% of the average value. The active power offset register has a resolution equal to 1/256 LSB of the waveform register. Therefore, the power offset correction resolution is 0.000464%/LSB (0.119%/256) at -60 dB.
Rev. B | Page 60 of 156
ADE5166/ADE5169/ADE5566/ADE5569
ACTIVE ENERGY CALCULATION
As stated in the Active Power Calculation section, active power is defined as the rate of energy flow. This relationship can be expressed mathematically, as shown in Equation 11. accumulation. The active power signal in the waveform register is continuously added to the internal active energy register. The active energy accumulation depends on the setting of POAM (Bit 1) and ABSAM (Bit 0) in the ACCMODE register (Address 0x0F). When both bits are cleared, the addition is signed and, therefore, negative energy is subtracted from the active energy contents. When both bits are set, the ADE5166/ADE5169/ ADE5566/ADE5569 are set to the more restrictive mode, the positive-only accumulation mode. When POAM (Bit 1) in the ACCMODE register (Address 0x0F) is set, only positive power contributes to the active energy accumulation. When ABSAM (Bit 0) in the ACCMODE register (Address 0x0F) is set, the absolute active power is used for the active energy accumulation (see the Watt Absolute Accumulation Mode section). The output of the multiplier is divided by the value in the WDIV register (Address 0x24). If the value in the WDIV register is equal to 0, the internal active energy register is divided by 1. WDIV is an 8-bit, unsigned register. After dividing by WDIV, the active energy is accumulated in a 49-bit internal energy accumulation register. The upper 24 bits of this register are accessible through a read to the active energy register (WATTHR, Address 0x01[23:0]). A read to the RWATTHR register (Address 0x02) returns the contents of the WATTHR register, and the upper 24 bits of the internal register are cleared. As shown in Figure 66, the active power signal is accumulated in an internal 49-bit, signed register. The active power signal can be read from the waveform register by setting the WAVMODE register (Address 0x0D) and setting the WFSM bit (Bit 5) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB). Like the current and voltage channel waveform sampling modes, the waveform data is available at sample rates of 25.6 kSPS, 12.8 kSPS, 6.4 kSPS, and 3.2 kSPS.
UPPER 24 BITS ARE ACCESSIBLE THROUGH WATTHR[23:0] REGISTER 0
P=
dE dt
(11)
where: P is power. E is energy. Conversely, energy is given as the integral of power.
E = P (t )dt
(12)
The ADE5166/ADE5169/ADE5566/ADE5569 achieve the integration of the active power signal by continuously accumulating the active power signal in an internal, nonreadable, 49-bit energy register. The WATTHR register (Address 0x01) represents the upper 24 bits of this internal register. This discrete time accumulation or summation is equivalent to integration in continuous time. Equation 13 expresses the relationship.
E = P (t )dt = lim P (nT ) x T t 0 n =1
(13)
where: n is the discrete time sample number. T is the discrete time sample period. The discrete time sample period (T) for the accumulation register in the ADE5166/ADE5169/ADE5566/ADE5569 is 1.22 s (5/MCLK). In addition to calculating the energy, this integration removes any sinusoidal components that may be in the active power signal. Figure 66 shows this discrete time integration or
FOR WAVEFORM SAMPLING
23
WATTHR[23:0]
WATTOS[15:0] sgn 26 25 CURRENT CHANNEL
LPF2 2-6 2-7 2-8 WDIV[7:0] + + VOLTAGE CHANNEL ACTIVE POWER SIGNAL WGAIN[11:0] OUTPUTS FROM THE LPF2 ARE ACCUMULATED (INTEGRATED) IN THE INTERNAL ACTIVE ENERGY REGISTER 48 0
+
+
%
TO DIGITAL-TO-FREQUENCY CONVERTER WAVEFORM REGISTER VALUES
T
OUTPUT LPF2
5 MCLK
TIME (nT)
Figure 66. Active Energy Calculation
Rev. B | Page 61 of 156
07411-041
ADE5166/ADE5169/ADE5566/ADE5569
Figure 67 shows this energy accumulation for full-scale signals (sinusoidal) on the analog inputs. The three displayed curves illustrate the minimum period of time it takes the energy register to roll over when the active power gain register contents are 0x7FF, 0x000, and 0x800. The watt gain register is used to carry out power calibration in the ADE5166/ADE5169/ADE5566/ ADE5569. As shown, the fastest integration time occurs when the watt gain register is set to maximum full scale, that is, 0x7FF.
WATTHR[23:0] 0x7F FFFF
When WDIV is set to a value other than 0, the integration time varies, as shown in Equation 15. Time = TimeWDIV = 0 x WDIV (15)
Active Energy Accumulation Modes Watt Signed Accumulation Mode
The ADE5166/ADE5169/ADE5566/ADE5569 active energy default accumulation mode is a watt-signed accumulation that is based on the active power information.
WGAIN = 0x7FF WGAIN = 0x000 WGAIN = 0x800
Watt Positive-Only Accumulation Mode
The ADE5166/ADE5169/ADE5566/ADE5569 are placed in watt positive-only accumulation mode by setting the POAM bit (Bit 1) in the ACCMODE register (Address 0x0F). In this mode, the energy accumulation is done only for positive power, ignoring any occurrence of negative power above or below the no load threshold (see Figure 68). The CF pulse also reflects this accumulation method when in this mode. The default setting for this mode is off. Detection of transitions in the direction of power flow and detection of no load threshold are active in this mode.
07411-042
0x3F FFFF
0x00 0000
3.41
6.82
10.2
13.7
TIME (Minutes)
0x40 0000
0x80 0000
Figure 67. Energy Register Rollover Time for Full-Scale Power (Minimum and Maximum Power Gain)
Note that the energy register contents roll over to full-scale negative (0x800000) and continue to increase in value when the power or energy flow is positive (see Figure 67). Conversely, if the power is negative, the energy register underflows to full-scale positive (0x7FFFFF) and continues to decrease in value. Using the Interrupt Enable 2 SFR (MIRQENM, Address 0xDA), the ADE5166/ADE5169/ADE5566/ADE5569 can be configured to issue an ADE interrupt to the 8052 core when the active energy register is half full (positive or negative) or when an overflow or underflow occurs.
ACTIVE ENERGY
NO LOAD THRESHOLD ACTIVE POWER NO LOAD THRESHOLD
As mentioned in the Active Energy Calculation section, the discrete time sample period (T) for the accumulation register is 1.22 s (5/MCLK). With full-scale sinusoidal signals on the analog inputs and the WGAIN register (Address 0x1D) set to 0x000, the average word value from each LPF2 is 0xCCCCD (see Figure 64). The maximum positive value that can be stored in the internal 49-bit register is 248 (or 0xFFFF FFFF FFFF) before it overflows. The integration time under these conditions when WDIV = 0 is calculated in the following equation: Time =
0 xFFFF FFFF FFFF 0 xCCCCD x 1.22 s = 409.6 sec = 6.82 min (14)
INTERRUPT STATUS REGISTERS
Figure 68. Energy Accumulation in Positive-Only Accumulation Mode
Watt Absolute Accumulation Mode
The ADE5166/ADE5169/ADE5566/ADE5569 are placed in watt absolute accumulation mode by setting the ABSAM bit (Bit 0) in the ACCMODE register (Address 0x0F). In this mode, the energy accumulation is done using the absolute active power, ignoring any occurrence of power below the no load threshold (see Figure 69). The CF pulse also reflects this accumulation method when in this mode. The default setting for this mode is off. Detection of transitions in the direction of power flow and detection of no load threshold are active in this mode.
Rev. B | Page 62 of 156
07411-043
Integration Time Under Steady Load--Active Energy
APSIGN FLAG POS NEG POS
ADE5166/ADE5169/ADE5566/ADE5569
Line Cycle Active Energy Accumulation Mode
In line cycle active energy accumulation mode, the energy accumulation of the ADE5166/ADE5169/ADE5566/ADE5569 can be synchronized to the voltage channel zero crossing so that active energy can be accumulated over an integral number of half-line cycles. The advantage of summing the active energy over an integer number of line cycles is that the sinusoidal component in the active energy is reduced to 0. This eliminates any ripple in the energy calculation. Energy is calculated more accurately and more quickly because the integration period can be shortened. By using this mode, the energy calibration can be greatly simplified, and the time required to calibrate the meter can be significantly reduced. In the line cycle active energy accumulation mode, the ADE5166/ ADE5169/ADE5566/ADE5569 accumulate the active power signal in the LWATTHR register (Address 0x03) for an integral number of line cycles, as shown in Figure 70. The number of half-line cycles is specified in the LINCYC register (Address 0x12). The ADE5166/ADE5169/ADE5566/ADE5569 can accumulate active power for up to 65,535 half-line cycles. Because the active power is integrated on an integral number of line cycles, the CYCEND flag (Bit 2) in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE) is set at the end of an active energy accumulation line cycle. If the CYCEND enable bit (Bit 2) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB) is set, the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the CYCEND status bit is cleared (see the Energy Measurement Interrupts section). Another calibration cycle starts as soon as the CYCEND flag is set. If the LWATTHR register (Address 0x03) is not read before a new CYCEND flag is set, the LWATTHR register is overwritten by a new value.
ACTIVE ENERGY
NO LOAD THRESHOLD ACTIVE POWER NO LOAD THRESHOLD
APSIGN FLAG INTERRUPT STATUS REGISTERS
07411-044
APNOLOAD
POS
NEG
POS
APNOLOAD
Figure 69. Energy Accumulation in Absolute Accumulation Mode
Active Energy Pulse Output
All of the ADE5166/ADE5169/ADE5566/ADE5569 circuitry has a pulse output whose frequency is proportional to active power (see the Active Power Calculation section). This pulse frequency output uses the calibrated signal from the WGAIN register (Address 0x1D) output, and its behavior is consistent with the setting of the active energy accumulation mode in the ACCMODE register (Address 0x0F). The pulse output is active low and should preferably be connected to an LED, as shown in Figure 80.
TO DIGITAL-TO-FREQUENCY CONVERTER WGAIN[11:0] OUTPUT FROM LPF2 WATTOS[15:0] + + 48 0
%
WDIV[7:0] ACCUMULATE ACTIVE ENERGY IN INTERNAL REGISTER AND UPDATE THE LWATTHR REGISTER AT THE END OF LINCYC HALF-LINE CYCLES
LPF1 FROM VOLTAGE CHANNEL ADC ZERO-CROSSING DETECTION CALIBRATION CONTROL
23
LWATTHR[23:0]
0
LINCYC[15:0]
Figure 70. Line Cycle Active Energy Accumulation Mode
Rev. B | Page 63 of 156
07411-046
ADE5166/ADE5169/ADE5566/ADE5569
When a new half-line cycle is written in the LINCYC register (Address 0x12), the LWATTHR register (Address 0x03) is reset, and a new accumulation starts at the next zero crossing. The number of half-line cycles is then counted until LINCYC is reached. This implementation provides a valid measurement at the first CYCEND interrupt after writing to the LINCYC register (see Figure 71). The line active energy accumulation uses the same signal path as the active energy accumulation. The LSB size of these two registers is equivalent.
V (t ) = 2 x V sin(t + ) I (t ) = 2 x I sin(t ) I ' (t ) = 2 x I sin t + 2
(19)
(20)
where: is the phase difference between the voltage and current channel. V is the rms voltage. I is the rms current. q(t) = V(t) x I'(t) (21) q(t) = VI sin () + VI sin(2t + ) The average reactive power over an integral number of lines (n) is given in Equation 22.
LWATTHR REGISTER
CYCEND IRQ
07411-045
LINCYC VALUE
Q=
1 nT
nT 0
q(t )dt = VI sin()
(22)
Figure 71. Energy Accumulation When LINCYC Changes
Using the information from Equation 8 and Equation 9
nT nT VI E (t ) = VIdt - cos(2ft )dt 2 0 f 0 1+ 8.9 where: n is an integer. T is the line cycle period.
where: T is the line cycle period. q is referred to as the reactive power. Note that the reactive power is equal to the dc component of the instantaneous reactive power signal, q(t), in Equation 21. The instantaneous reactive power signal, q(t), is generated by multiplying the voltage and current channels. In this case, the phase of the current channel is shifted by 90. The dc component of the instantaneous reactive power signal is then extracted by a low-pass filter to obtain the reactive power information (see Figure 72). In addition, the phase-shifting filter has a nonunity magnitude response. Because the phase-shifted filter has a large attenuation at high frequency, the reactive power is primarily for calculation at line frequency. The effect of harmonics is largely ignored in the reactive power calculation. Note that, because of the magnitude characteristic of the phase shifting filter, the weight of the reactive power is slightly different from the active power calculation (see the Energy Register Scaling section). The frequency response of the LPF in the reactive signal path is identical to the one used for LPF2 in the average active power calculation. Because LPF2 does not have an ideal brick wall frequency response (see Figure 65), the reactive power signal has some ripple due to the instantaneous reactive power signal. This ripple is sinusoidal and has a frequency equal to 2x the line frequency. Because the ripple is sinusoidal in nature, it is removed when the reactive power signal is integrated to calculate energy. The reactive power signal can be read from the waveform register by setting the WAVMODE register (Address 0x0D) and the WFSM bit (Bit 5) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB). Like the current and voltage channels waveform sampling modes, the waveform data is available at sample rates of 25.6 kSPS, 12.8 kSPS, 6.4 kSPS, and 3.2 kSPS.
(16)
Because the sinusoidal component is integrated over an integer number of line cycles, its value is always 0. Therefore,
E = VIdt + 0
0
nT
(17) (18)
E(t) = VInT
Note that in this mode, the 16-bit LINCYC register can hold a maximum value of 65,535. In other words, the line energy accumulation mode can be used to accumulate active energy for a maximum duration of 65,535 half-line cycles. At a 60 Hz line frequency, the total duration of 65,535/120 Hz = 546 sec.
REACTIVE POWER CALCULATION (ADE5169/ADE5569 ONLY)
Reactive power, a function available for the ADE5169/ADE5569, is defined as the product of the voltage and current waveforms when one of these signals is phase-shifted by 90. The resulting waveform is called the instantaneous reactive power signal. Equation 21 gives an expression for the instantaneous reactive power signal in an ac system when the phase of the current channel is shifted by 90.
Rev. B | Page 64 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Reactive Power Gain Calibration
Figure 72 shows the signal processing chain for the ADE5169/ ADE5569 reactive power calculation. As explained in the Reactive Power Calculation (ADE5169/ADE5569) section, the reactive power is calculated by applying a low-pass filter to the instantaneous reactive power signal. Note that, when reading the waveform samples from the output of LPF2, the gain of the reactive energy can be adjusted by using the multiplier and by writing a twos complement, 12-bit word to the var gain register (VARGAIN, Address 0x1E[11:0]). Equation 23 shows how the gain adjustment is related to the contents of the var gain register. Output VARGAIN =
Reactive Power Sign Detection
The ADE5169/ADE5569 detect a change of sign in the reactive power. The VARSIGN flag (Bit 4) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) records when a change of sign has occurred according to the VARSIGN bit (Bit 5) in the ACCMODE register (Address 0x0F). If the VARSIGN bit (Bit 4) is set in the Interrupt Enable 1 SFR (MIRQENL, Address 0xD9), the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the VARSIGN status bit is cleared (see the Energy Measurement Interrupts section). When the VARSIGN bit (Bit 5) in the ACCMODE register (Address 0x0F) is cleared (default), a transition from positive to negative reactive power sets the VARSIGN flag (Bit 4) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC). When VARSIGN in the ACCMODE register (Address 0x0F) is set, a transition from negative to positive reactive power sets the VARSIGN flag in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC).
VARGAIN Reactive Power x 1 + 212
(23)
The resolution of the VARGAIN register is the same as the WGAIN register (Address 0x1D) (see the Active Power Gain Calibration section). VARGAIN can be used to calibrate the reactive power (or energy) calculation in the ADE5169/ADE5569.
Reactive Power Offset Calibration
The ADE5169/ADE5569 also incorporate a reactive power offset register (VAROS, Address 0x21). This is a signed, twos complement, 16-bit register that can be used to remove offsets in the reactive power calculation (see Figure 72). An offset can exist in the reactive power calculation due to crosstalk between channels on the PCB or in the IC itself. The offset calibration allows the contents of the reactive power register to be maintained at 0 when no power is being consumed. The 256 LSBs (VAROS = 0x0100) written to the reactive power offset register are equivalent to 1 LSB in the WAVMODE register (Address 0x0D).
Reactive Power No Load Detection
The ADE5169/ADE5569 include a no load threshold feature on the reactive power that eliminates any creep effects in the meter. The ADE5169/ADE5569 accomplish this by not accumulating reactive energy when the multiplier output is below the no load threshold. When the reactive power is below the no load threshold, the RNOLOAD flag (Bit 1) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set. If the RNOLOAD bit (Bit 1) is set in the Interrupt Enable 1 SFR (MIRQENL, Address 0xD9), the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the RNOLOAD status bit is cleared (see the Energy Measurement Interrupts section). The no load threshold level can be selected by setting the VARNOLOAD bits (Bits[3:2])in the NLMODE register (Address 0x0E). Setting these bits to 0b00 disables the no load detection, and setting them to 0b01, 0b10, or 0b11 sets the no load detection threshold to 0.015%, 0.0075%, and 0.0037% of the full-scale output frequency of the multiplier, respectively.
Sign of Reactive Power Calculation
Note that the average reactive power is a signed calculation. The phase shift filter has -90 phase shift when the integrator is enabled and +90 phase shift when the integrator is disabled. Table 47 summarizes the relationship of the phase difference between the voltage and the current and the sign of the resulting var calculation.
Table 47. Sign of Reactive Power Calculation
Angle 0 to +90 -90 to 0 0 to +90 -90 to 0 Integrator Off Off On On Sign Positive Negative Positive Negative
Rev. B | Page 65 of 156
ADE5166/ADE5169/ADE5566/ADE5569
REACTIVE ENERGY CALCULATION (ADE5169/ADE5569 ONLY)
As for active energy, the ADE5169/ADE5569 achieve the integration of the reactive power signal by continuously accumulating the reactive power signal in an internal, nonreadable, 49-bit energy register. The reactive energy register (VARHR, Address 0x04) represents the upper 24 bits of this internal register. The VARHR register and its function are available in the ADE5169/ADE5569. The discrete time sample period (T) for the accumulation register in the ADE5169/ADE5569 is 1.22 s (5/MCLK). As well as calculating the energy, this integration removes any sinusoidal components that may be in the active power signal. Figure 72 shows this discrete time integration or accumulation. The reactive power signal in the waveform register is continuously added to the internal reactive energy register. The reactive energy accumulation depends on the setting of SAVARM (Bit 2) and ABSVARM (Bit 3) in the ACCMODE register (Address 0x0F). When both bits are cleared, the addition is signed and, therefore, negative energy is subtracted from the reactive energy contents. When both bits are set, the ADE5169/ ADE5569 are set to the more restrictive mode, which is the absolute accumulation mode. When the SAVARM bit (Bit 2) in the ACCMODE register (Address 0x0F) is set, the reactive power is accumulated depending on the sign of the active power. When active power is positive, the reactive power is added as it is to the reactive energy register. When active power is negative, the reactive power is subtracted from the reactive energy accumulator (see the Var Antitamper Accumulation Mode section). When the ABSVARM bit (Bit 3) in the ACCMODE register (Address 0x0F) is set, the absolute reactive power is used for the reactive energy accumulation (see the Var Absolute Accumulation Mode section). The output of the multiplier is divided by VARDIV. If the value in the VARDIV register (Address 0x25) is equal to 0, the internal reactive energy register is divided by 1. VARDIV is an 8-bit, unsigned register. After dividing by VARDIV, the reactive energy is accumulated in a 49-bit internal energy accumulation register. The upper 24 bits of this register are accessible through a read to the reactive energy register (VARHR, Address 0x04[23:0]). A read to the RVARHR register (Address 0x05) returns the contents of the VARHR register, and the upper 24 bits of the internal register are cleared. As shown in Figure 72, the reactive power signal is accumulated in an internal 49-bit, signed register. The reactive power signal can be read from the waveform register by setting the WAVMODE register (Address 0x0D) and setting the WFSM bit (Bit 5) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB). Like the current and voltage channel waveform sampling modes, the waveform data is available at sample rates of 25.6 kSPS, 12.8 kSPS, 6.4 kSPS, and 3.2 kSPS. Figure 67 shows this energy accumulation for full-scale signals (sinusoidal) on the analog inputs. These curves also apply to the reactive energy accumulation. Note that the energy register contents roll over to full-scale negative (0x800000) and continue to increase in value when the power or energy flow is positive. Conversely, if the power is negative, the energy register underflows to full-scale positive (0x7FFFFF) and continues to decrease in value. Using the Interrupt Enable 2 SFR (MIRQENM, Address 0xDA), the ADE5169/ADE5569 can be configured to issue an ADE interrupt to the 8052 core when the reactive energy register is half full (positive or negative) or when an overflow or underflow occurs.
FOR WAVEFORM SAMPLING 90 PHASE SHIFTING FILTER 2 VAROS[15:0] sgn 26 25 LPF2 + VOLTAGE CHANNEL + 2-6 2-7 2-8
23
VARHR[23:0]
UPPER 24 BITS ARE ACCESSIBLE THROUGH VARHR[23:0] REGISTER 0
CURRENT CHANNEL
HPF
VARDIV[7:0] + +
48 0
%
PHCAL[7:0] REACTIVE POWER SIGNAL
VARGAIN[11:0] OUTPUTS FROM THE LPF2 ARE ACCUMULATED (INTEGRATED) IN THE INTERNAL REACTIVE ENERGY REGISTER
TO DIGITAL-TO-FREQUENCY CONVERTER T 5 MCLK WAVEFORM REGISTER VALUES
OUTPUT LPF2
TIME (nT)
Figure 72. Reactive Energy Calculation
Rev. B | Page 66 of 156
07411-047
ADE5166/ADE5169/ADE5566/ADE5569
Integration Time Under Steady Load--Reactive Energy
As mentioned in the Active Energy Calculation section, the discrete time sample period (T) for the accumulation register is 1.22 s (5/MCLK). With full-scale sinusoidal signals on the analog inputs, and with the VARGAIN register (Address 0x1E) and the VARDIV register (Address 0x25) set to 0x000, the integration time before the reactive energy register overflows is calculated in Equation 24. Time = 0xFFFF FFFF FFFF
0xCCCCD
REACTIVE ENERGY
NO LOAD THRESHOLD
x 1.22 s = 409.6 sec = 6.82 min
(24)
REACTIVE POWER NO LOAD THRESHOLD
When VARDIV is set to a value other than 0, the integration time varies, as shown in Equation 25.
Time = TimeVARDIV = 0 x VARDIV
(25)
NO LOAD THRESHOLD
Reactive Energy Accumulation Modes Var Signed Accumulation Mode
The ADE5169/ADE5569 reactive energy default accumulation mode is a signed accumulation based on the reactive power information.
ACTIVE POWER NO LOAD THRESHOLD
Var Antitamper Accumulation Mode
The ADE5169/ADE5569 are placed in var antitamper accumulation mode by setting SAVARM (Bit 2) in the ACCMODE register (Address 0x0F). In this mode, the reactive power is accumulated depending on the sign of the active power. When the active power is positive, the reactive power is added as it is to the reactive energy register. When the active power is negative, the reactive power is subtracted from the reactive energy accumulator (see Figure 73). The CF pulse also reflects this accumulation method when in this mode. The default setting for this mode is off. Transitions in the direction of power flow and no load threshold are active in this mode.
VARSIGN FLAG POS NEG POS INTERRUPT STATUS REGISTERS
07411-048
Figure 73. Reactive Energy Accumulation in Var Antitamper Accumulation Mode
Var Absolute Accumulation Mode
The ADE5169/ADE5569 are placed in absolute accumulation mode by setting ABSVARM (Bit 3) in the ACCMODE register (Address 0x0F). In absolute accumulation mode, the reactive energy accumulation is done by using the absolute reactive power and ignoring any occurrence of power below the no load threshold for the reactive energy (see Figure 74). The CF pulse also reflects this accumulation method when in the absolute accumulation mode. The default setting for this mode is off. Transitions in the direction of power flow and no load threshold are active in this mode.
REACTIVE ENERGY
NO LOAD THRESHOLD REACTIVE POWER NO LOAD THRESHOLD
07411-049
Figure 74. Reactive Energy Accumulation in Absolute Accumulation Mode
Reactive Energy Pulse Output
The ADE5169/ADE5569 provide all the circuitry with a pulse output whose frequency is proportional to reactive power (see the Energy-to-Frequency Conversion section). This pulse frequency output uses the calibrated signal from the VARGAIN register output, and its behavior is consistent with the setting of the reactive energy accu-mulation mode in the ACCMODE register (Address 0x0F). The pulse output is active low and should preferably be connected to an LED, as shown in Figure 80.
Rev. B | Page 67 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Line Cycle Reactive Energy Accumulation Mode
In line cycle reactive energy accumulation mode, the energy accumulation of the ADE5169/ADE5569 can be synchronized to the voltage channel zero crossing so that reactive energy can be accumulated over an integral number of half-line cycles. The advantages of this mode are similar to those described in the Line Cycle Active Energy Accumulation Mode section. In line cycle active energy accumulation mode, the ADE5169/ ADE5569 accumulate the reactive power signal in the LVARHR register (Address 0x06) for an integral number of line cycles, as shown in Figure 75. The number of half-line cycles is specified in the LINCYC register (Address 0x12). The ADE5169 /ADE5569 can accumulate active power for up to 65,535 half-line cycles. Because the reactive power is integrated on an integral number of line cycles, the CYCEND flag (Bit 2) in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE) is set at the end of a reactive energy accumulation line cycle. If the CYCEND enable bit (Bit 2)
TO DIGITAL-TO-FREQUENCY CONVERTER VARGAIN[11:0] OUTPUT FROM LPF2 VAROS[15:0]
in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB) is set, the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the CYCEND status bit is cleared (see the Energy Measurement Interrupts section). Another calibration cycle starts as soon as the CYCEND flag is set. If the LVARHR register (Address 0x06) is not read before a new CYCEND flag is set, the LVARHR register is overwritten by a new value. When a new half-line cycle is written in the LINCYC register (Address 0x12), the LVARHR register is reset, and a new accumulation starts at the next zero crossing. The number of half-line cycles is then counted internally until the value programmed in LINCYC is reached. This implementation provides a valid measurement at the first CYCEND interrupt after writing to the LINCYC register. The line reactive energy accumulation uses the same signal path as the reactive energy accumulation. The LSB size of these two registers is equivalent.
%
+
+
48
0
VARDIV[7:0] ACCUMULATE REACTIVE ENERGY IN INTERNAL REGISTER AND UPDATE THE LVARHR REGISTER AT THE END OF LINCYC HALF-LINE CYCLES
LPF1 FROM VOLTAGE CHANNEL ADC
23 ZERO-CROSSING DETECTION
CALIBRATION CONTROL LVARHR[23:0]
0
LINCYC[15:0]
Figure 75. Line Cycle Reactive Energy Accumulation Mode
Rev. B | Page 68 of 156
07411-050
ADE5166/ADE5169/ADE5566/ADE5569
APPARENT POWER CALCULATION
Apparent power is defined as the maximum power that can be delivered to a load. Vrms and Irms are the effective voltage and current delivered to the load, respectively. Therefore, the apparent power (AP) = Vrms x Irms. This equation is independent of the phase angle between the current and the voltage. Equation 29 gives an expression of the instantaneous power signal in an ac system with a phase shift.
power output. The apparent power is calculated with the current and voltage rms values obtained in the rms blocks of the ADE5166/ADE5169/ADE5566/ADE5569.
Apparent Power Offset Calibration
Each rms measurement includes an offset compensation register to calibrate and eliminate the dc component in the rms value (see the Current Channel RMS Calculation section and the Voltage Channel RMS Calculation section). The rms values of the voltage and current channels are then multiplied together in the apparent power signal processing. Because no additional offsets are created in the multiplication of the rms values, there is no specific offset compensation in the apparent power signal processing. The offset compensation of the apparent power measurement is determined by calibrating each individual rms measurement.
V (t ) = 2 x Vrms sin(t + ) I (t ) = 2 x I rms sin(t + ) P(t) = V(t) x I(t)
(26) (27) (28) (29)
P (t ) = Vrms I rms cos() - Vrms I rms cos(2t + )
APPARENT ENERGY CALCULATION
The apparent energy is given as the integral of the apparent power. Apparent Energy = Apparent Power(t)dt (31)
Figure 76 illustrates the signal processing for the calculation of the apparent power in the ADE5166/ADE5169/ADE5566/ADE5569. The apparent power signal can be read from the waveform register by setting the WAVMODE register (Address 0x0D) and setting the WFSM bit (Bit 5) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB). Like the current and voltage channel waveform sampling modes, the waveform data is available at sample rates of 25.6 kSPS, 12.8 kSPS, 6.4 kSPS, or 3.2 kSPS. The gain of the apparent energy can be adjusted by using the multiplier and by writing a twos complement, 12-bit word to the VAGAIN register (VAGAIN, Address 0x1F[11:0]). Equation 30 shows how the gain adjustment is related to the contents of the VAGAIN register.
The ADE5166/ADE5169/ADE5566/ADE5569 achieve the integration of the apparent power signal by continuously accumulating the apparent power signal in an internal 48-bit register. The apparent energy register (VAHR, Address 0x07) represents the upper 24 bits of this internal register. This discrete time accumulation or summation is equivalent to integration in continuous time. Equation 32 expresses the relationship.
Apparent Energy = lim Apparent Power ( nT ) x T (32) T 0 n=0
Output VAGAIN =
VAGAIN Apparent Power x 1 + 2 12 (30)
where: n is the discrete time sample number. T is the discrete time sample period. The discrete time sample period (T) for the accumulation register in the ADE5166/ADE5169/ADE5566/ADE5569 is 1.22 s (5/MCLK).
For example, when 0x7FF is written to the VAGAIN register, the power output is scaled up by 50% (0x7FF = 2048d, 2047/212 = 0.5). Similarly, 0x800 = -2048d (signed, twos complement), and power output is scaled by -50%. Each LSB represents 0.0244% of the
VARMSCFCON APPARENT POWER SIGNAL (P)
Irms
CURRENT RMS SIGNAL - I(t) 0x1CF68C 0x00
0x1A36E2
VAGAIN Vrms
VOLTAGE RMS SIGNAL - V(t)
0x1CF68C 0x00
Figure 76. Apparent Power Signal Processing
Rev. B | Page 69 of 156
07411-051
TO DIGITAL-TO-FREQUENCY CONVERTER
ADE5166/ADE5169/ADE5566/ADE5569
Figure 77 shows this discrete time integration or accumulation. The apparent power signal is continuously added to the internal register. This addition is a signed addition even if the apparent energy theoretically remains positive. The 49 bits of the internal register are divided by VADIV. If the value in the VADIV register (Address 0x26) is 0, the internal apparent energy register is divided by 1. VADIV is an 8-bit, unsigned register. The upper 24 bits are then written to the 24-bit apparent energy register (VAHR, Address 0x07[23:0]). The RVAHR register (Address 0x08), which is 24 bits long, is provided to read the apparent energy. This register is reset to 0 after a read operation. Note that the apparent energy register is unsigned. By setting VAEHF (Bit 2) and VAEOF (Bit 5) in the Interrupt Enable 2 SFR (MIRQENM, Address 0xDA), the ADE5166/ADE5169/ADE5566/ ADE5569 can be configured to issue an ADE interrupt to the 8052 core when the apparent energy register is half full or when an overflow occurs. The half-full interrupt for the unsigned apparent energy register is based on 24 bits, as opposed to 23 bits for the signed active energy register. the average word value from the apparent power stage is 0x1A36E2 (see the Apparent Energy Calculation section). The maximum value that can be stored in the apparent energy register before it over-flows is 224 or 0xFF FFFF. The average word value is added to the internal register, which can store 248 or 0xFFFF FFFF FFFF before it overflows. Therefore, the integration time under these conditions, with VADIV = 0, is calculated as follows: Time = 0xFFFF, FFFF, FFFF x 1.22 s = 199 sec = 3.33 min 0xD055
(33)
When VADIV is set to a value other than 0, the integration time varies, as shown in Equation 34. Time = TimeVADIV = 0 x VADIV (34)
Apparent Energy Pulse Output
All the ADE5166/ADE5169/ADE5566/ADE5569 circuitry has a pulse output whose frequency is proportional to the apparent power (see the Energy-to-Frequency Conversion section). This pulse frequency output uses the calibrated signal from the VAGAIN register. This output can also be used to output a pulse whose frequency is proportional to Irms. The pulse output is active low and should preferably be connected to an LED, as shown in Figure 80.
Integration Times Under Steady Load--Apparent Energy
As mentioned in the Apparent Energy Calculation section, the discrete time sample period (T) for the accumulation register is 1.22 s (5/MCLK). With full-scale sinusoidal signals on the analog inputs and the VAGAIN register (Address 0x1F) set to 0x000,
23
VAHR[23:0]
0
48
0
VADIV
%
APPARENT POWER or Irms
+ +
48
0
APPARENT POWER SIGNAL = P T
APPARENT POWER OR Irms IS ACCUMULATED (INTEGRATED) IN THE APPARENT ENERGY REGISTER
TIME (nT)
Figure 77. Apparent Energy Calculation
Rev. B | Page 70 of 156
07411-052
ADE5166/ADE5169/ADE5566/ADE5569
Line Cycle Apparent Energy Accumulation Mode
The ADE5166/ADE5169/ADE5566/ADE5569 are designed with a special apparent energy accumulation mode that simplifies the calibration process. By using the on-chip, zero-crossing detection, the ADE5166/ADE5169/ADE5566/ADE5569 accumulate the apparent power signal in the LVAHR register (Address 0x09) for an integral number of half cycles, as shown in Figure 78. The line cycle apparent energy accumulation mode is always active. The number of half-line cycles is specified in the LINCYC register (Address 0x12), which is an unsigned 16-bit register. The ADE5166/ADE5169/ADE5566/ADE5569 can accumulate apparent power for up to 65,535 combined half cycles. Because the apparent power is integrated on the same integral number of line cycles as the line active register and reactive energy register, these values can easily be compared. The energies are calculated more accurately because of this precise timing control and provide all the information needed for reactive power and power factor calculation. At the end of an energy calibration cycle, the CYCEND flag (Bit 2) in the Interrupt Status 3 SFR (MIRQSTH, Address 0xDE) is set. If the CYCEND enable bit (Bit 2) in the Interrupt Enable 3 SFR (MIRQENH, Address 0xDB) is set, the 8052 core has a pending ADE interrupt. When a new half-line cycle is written in the LINCYC register (Address 0x12), the LVAHR register (Address 0x09) is reset and a new accumulation starts at the next zero crossing. The number of half-line cycles is then counted until LINCYC is reached. This implementation provides a valid measurement at the first CYCEND interrupt after writing to the LINCYC register. The line apparent energy accumulation uses the same signal path as the apparent energy accumulation. The LSB size of these two registers is equivalent.
Apparent Power No Load Detection
The ADE5166/ADE5169/ADE5566/ADE5569 include a no load threshold feature on the apparent power that eliminates any creep effects in the meter. The ADE5166/ADE5169/ADE5566/ADE5569 accomplish this by not accumulating energy if the multiplier output is below the no load threshold. When the apparent power is below the no load threshold, the VANOLOAD flag (Bit 2) in the Interrupt Status 1 SFR (MIRQSTL, Address 0xDC) is set. If the VANOLOAD bit (Bit 2) is set in the Interrupt Enable 1 SFR (MIRQENL, Address 0xD9), the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the VANOLOAD status bit is cleared (see the Energy Measurement Interrupts section). The no load threshold level can be selected by setting the VANOLOAD bits (Bits[5:4]) in the NLMODE register (Address 0x0E). Setting these bits to 0b00 disables the no load detection, and setting them to 0b01, 0b10, or 0b11 sets the no load detection threshold to 0.030%, 0.015%, and 0.0075% of the full-scale output frequency of the multiplier, respectively. This no load threshold can also be applied to the Irms pulse output when selected. In this case, the level of the no load threshold is the same as for the apparent energy.
AMPERE-HOUR ACCUMULATION
In a tampering situation where no voltage is available to the energy meter, the ADE5166/ADE5169/ADE5566/ADE5569 are capable of accumulating the ampere-hours instead of apparent power into the VAHR (Address 0x07), RVAHR (Address 0x08), and LVAHR (Address 0x09) registers. When VARMSCFCON (Bit 3) of the MODE2 register (Address 0x0C) is set, the VAHR, RVAHR, and LVAHR registers and the input for the digital-to-frequency converter accumulate Irms instead of apparent power. All the signal processing and calibration registers available for apparent power and energy accumulation remain the same when ampere-hour accumulation is selected. However, the scaling difference between Irms and apparent power requires independent values for gain calibration in the VAGAIN (Address 0x1F), VADIV (Address 0x26), CFxNUM (Address 0x27 and Address 0x29), and CFxDEN (Address 0x28 and Address 0x2A) registers.
APPARENT POWER OR Irms
%
+
+
48
0
VADIV[7:0]
LVAHR REGISTER IS UPDATED EVERY LINCYC ZERO CROSSING WITH THE TOTAL APPARENT ENERGY DURING THAT DURATION 23 0 LVAHR[23:0]
LPF1 FROM VOLTAGE CHANNEL ADC ZERO-CROSSING DETECTION CALIBRATION CONTROL
LINCYC[15:0]
Figure 78. Line Cycle Apparent Energy Accumulation Mode
Rev. B | Page 71 of 156
07411-053
ADE5166/ADE5169/ADE5566/ADE5569
ENERGY-TO-FREQUENCY CONVERSION
The ADE5166/ADE5169/ADE5566/ADE5569 also provide two energy-to-frequency conversions for calibration purposes. After initial calibration at manufacturing, the manufacturer or end customer often verifies the energy meter calibration. One convenient way to do this is for the manufacturer to provide an output frequency that is proportional to the active power, reactive power, apparent power, or Irms under steady load conditions. This output frequency can provide a simple single-wire, optically isolated interface to external calibration equipment. Figure 79 illustrates the energy-to-frequency conversion in the ADE5166/ADE5169/ ADE5566/ADE5569.
MODE2 REGISTER 0x0C VARMSCFCON CFxSEL[1:0]
The selection between Irms and apparent power is done by the VARMSCFCON bit (Bit 3) in the MODE2 register (Address 0x0C). With this selection, CF2 cannot be proportional to apparent power if CF1 is proportional to Irms, and CF1 cannot be proportional to apparent power if CF2 is proportional to Irms.
Pulse Output Characteristic
The pulse output for both DFCs stays low for 90 ms if the pulse period is longer than 180 ms (5.56 Hz). If the pulse period is shorter than 180 ms, the duty cycle of the pulse output is 50%. The pulse output is active low and should preferably be connected to an LED, as shown in Figure 80.
VDD CF
Irms
VA VAR* WATT DFC
CFxNUM
Figure 80. CF Pulse Output
/
CFxDEN
CFx PULSE OUTPUT
07411-054
The maximum output frequency with ac input signals at full scale and CFxNUM = 0x00 and CFxDEN = 0x00 is approximately 21.1 kHz. The ADE5166/ADE5169/ADE5566/ADE5569 incorporate two registers per DFC, CFxNUM[15:0] and CFxDEN[15:0], to set the CFx frequency. These unsigned, 16-bit registers can be used to adjust the CFx frequency to a wide range of values, scaling the output frequency by 1/216 to 1 with a step of 1/216. If 0 is written to any of these registers, 1 is applied to the register. The ratio of CFxNUM/CFxDEN should be <1 to ensure proper operation. If the ratio of the CFxNUM/CFxDEN registers is >1, the register values are adjusted to a ratio of 1. For example, if the output frequency is 1.562 kHz, and the content of CFxDEN is 0 (0x000), the output frequency can be set to 6.1 Hz by writing 0xFF to the CFxDEN register.
*AVAILABLE ONLY IN THE ADE5169 AND ADE5569.
Figure 79. Energy-to-Frequency Conversion
Two digital-to-frequency converters (DFC) are used to generate the pulsed outputs. When WDIV = 0 or 1, the DFC generates a pulse each time 1 LSB in the energy register is accumulated. An output pulse is generated when a CFxNUM/CFxDEN number of pulses are generated at the DFC output. Under steady load conditions, the output frequency is proportional to the active power, reactive power, apparent power, or Irms, depending on the CFxSEL bits in the MODE2 register (Address 0x0C). Both pulse outputs can be enabled or disabled by clearing or setting the DISCF1 bit (Bit 1) and the DISCF2 bit (Bit 2) in the MODE1 register (Address 0x0B), respectively. Both pulse outputs set separate flags in the Interrupt Status 2 SFR (MIRQSTM, Address 0xDD): CF1 (Bit 6) and CF2 (Bit 7). If the CF1 enable bit (Bit 6) and CF2 enable bit (Bit 7) in the Interrupt Enable 2 SFR (MIRQENM, Address 0xDA) are set, the 8052 core has a pending ADE interrupt. The ADE interrupt stays active until the CF1 or CF2 status bit is cleared (see the Energy Measurement Interrupts section).
ENERGY REGISTER SCALING
The ADE5166/ADE5169/ADE5566/ADE5569 provide measurements of active, reactive, and apparent energy that use separate paths and filtering for calculation. The difference in data paths can result in small differences in LSB weight between active, reactive, and apparent energy registers. These measurements are internally compensated so that the scaling is nearly one to one. The relationship between these registers is shown in Table 48.
Table 48. Energy Registers Scaling
Line Frequency = 50 Hz Var = 0.9952 x watt VA = 0.9978 x watt Var = 0.9997 x watt VA = 0.9977 x watt Line Frequency = 60 Hz Var = 0.9949 x watt VA = 1.0015 x watt Var = 0.9999 x watt VA = 1.0015 x watt Integrator Off Off On On
Pulse Output Configuration
The two pulse output circuits have separate configuration bits in the MODE2 register (Address 0x0C). Setting the CFxSEL bits to 0b00, 0b01, or 0b1X configures the DFC to create a pulse output proportional to active power, reactive power, or apparent power or Irms, respectively.
Rev. B | Page 72 of 156
07411-055
ADE5166/ADE5169/ADE5566/ADE5569
ENERGY MEASUREMENT INTERRUPTS
The energy measurement part of the ADE5166/ADE5169/ ADE5566/ADE5569 has its own interrupt vector for the 8052 core, Vector Address 0x004B (see the Interrupt Vectors section). The bits set in the Interrupt Enable 1 SFR (MIRQENL, Address 0xD9), Interrupt Enable 2 SFR (MIRQENM, Address 0xDA), and Interrupt Enable 3 SFR (MIRQENH, Address 0xDB) enable the energy measurement interrupts that are allowed to interrupt the 8052 core. If an event is not enabled, it cannot create a system interrupt. The ADE interrupt stays active until the status bit that created the interrupt is cleared. The status bit is cleared when a 0 is written to this register bit.
Rev. B | Page 73 of 156
ADE5166/ADE5169/ADE5566/ADE5569 TEMPERATURE, BATTERY, AND SUPPLY VOLTAGE MEASUREMENTS
The ADE5166/ADE5169/ADE5566/ADE5569 include temperature measurements as well as battery and supply voltage measurements. These measurements enable many forms of compensation. The temperature and supply voltage measurements can be used to compensate external circuitry. The RTC can be calibrated over temperature to ensure that it does not drift. Supply voltage measurements allow the LCD contrast to be maintained despite variations in voltage. Battery measurements allow for low battery detection. All ADC measurements are configured through the SFRs, as shown in Table 49. The temperature, battery, and supply voltage measurements can be configured to continue functioning in PSM1 and PSM2 modes. Keeping the temperature measurement active ensures that it is not necessary to wait for the temperature measurement to settle before using it for compensation.
Table 49. Temperature, Battery, and Supply Voltage Measurement SFRs
SFR Address 0xF9 0xF3 0xD8 0xFA 0xEF 0xDF 0xD7 R/W R/W R/W R/W R/W R/W R/W R/W Mnemonic STRBPER DIFFPROG ADCGO BATVTH VDCINADC BATADC TEMPADC Description Peripheral ADC strobe period (see Table 50). Temperature and supply delta (see Table 51). Start ADC measurement (see Table 52). Battery detection threshold (see Table 53). VDCINADC value (see Table 54). Battery ADC value (see Table 55). Temperature ADC value (see Table 56).
Table 50. Peripheral ADC Strobe Period SFR (STRBPER, Address 0xF9)
Bit [7:6] [5:4] Mnemonic Reserved VDCIN_PERIOD Default 00 00 Description These bits must be kept at 0 for proper operation. Period for background external voltage measurements. VDCIN_PERIOD Result 00 No VDCIN measurement 01 8 min 10 2 min 11 1 min Period for background battery level measurements. BATT_PERIOD Result 00 No battery measurement 01 16 min 10 4 min 11 1 min Period for background temperature measurements. TEMP_PERIOD Result 00 No temperature measurement 01 8 min 10 2 min 11 1 min
[3:2]
BATT_PERIOD
00
[1:0]
TEMP_PERIOD
00
Rev. B | Page 74 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 51. Temperature and Supply Delta SFR (DIFFPROG, Address 0xF3)
Bit [7:6] [5:3] Mnemonic Reserved TEMP_DIFF Default 00 00 Description Reserved. Difference threshold between last temperature measurement interrupting 8052 and new temperature measurement that should interrupt 8052. TEMP_DIFF Result 000 No interrupt 001 1 LSB (~ 0.8C) 010 2 LSB (~ 1.6C) 011 3 LSB (~ 2.4C) 100 4 LSB (~ 3.2C) 101 5 LSB (~ 4C) 110 6 LSB (~ 4.8C) 111 Every temperature measurement Difference threshold between the last external voltage measurement interrupting 8052 and the new external voltage measurement that should interrupt 8052. VDCIN_DIFF Result 000 No interrupt 001 1 LSB (~ 120 mV) 010 2 LSB (~ 240 mV) 011 3 LSB (~ 360 mV) 100 4 LSB (~ 480 mV) 101 5 LSB (~ 600 mV) 110 6 LSB (~ 720 mV) 111 Every VDCIN measurement
[2:0]
VDCIN_DIFF
00
Table 52. Start ADC Measurement SFR (ADCGO, Address 0xD8)
Bit 7 [6:3] 2 1 0 Bit Address 0xDF 0xDE to 0xDB 0xDA 0xD9 0xD8 Mnemonic PLLACK Reserved VDCIN_ADC_GO TEMP_ADC_GO BATT_ADC_GO Default 0 0000 0 0 0 Description Set this bit to clear the PLL fault bit, PLL_FLT (Bit 4), in the PERIPH SFR (Address 0xF4). A PLL fault is generated if a reset is caused because the PLL lost lock. Reserved. Set this bit to initiate an external voltage measurement. This bit is cleared when the measurement request is received by the ADC. Set this bit to initiate a temperature measurement. This bit is cleared when the measurement request is received by the ADC. Set this bit to initiate a battery measurement. This bit is cleared when the measurement request is received by the ADC.
Table 53. Battery Detection Threshold SFR (BATVTH, Address 0xFA)
Bit [7:0] Mnemonic BATVTH Default 0 Description The battery ADC value is compared to this register, the battery detection threshold register. If BATADC is lower than the threshold, an interrupt is generated.
Table 54. VDCINADC Value SFR (VDCINADC, Address 0xEF)
Bit [7:0] Mnemonic VDCINADC Default 0 Description The VDCINADC value in this register is updated when an ADC interrupt occurs.
Table 55. Battery ADC Value SFR (BATADC, Address 0xDF)
Bit [7:0] Mnemonic BATADC Default 0 Description The battery ADC value in this register is updated when an ADC interrupt occurs.
Table 56. Temperature ADC Value SFR (TEMPADC, Address 0xD7)
Bit [7:0] Mnemonic TEMPADC Default 0 Description The temperature ADC value in this register is updated when an ADC interrupt occurs.
Rev. B | Page 75 of 156
ADE5166/ADE5169/ADE5566/ADE5569
TEMPERATURE MEASUREMENT
To provide a digital temperature measurement, each ADE5166/ ADE5169/ADE5566/ADE5569 includes a dedicated ADC. The 8-bit temperature ADC value SFR (TEMPADC, Address 0xD7) holds the results of the temperature conversion. The resolution of the temperature measurement is 0.83C/LSB. There are two ways to initiate a temperature conversion: a single temperature measurement or background temperature measurements. * In PSM1 operating mode, the 8052 is active, and the part is battery powered. Single temperature measurements can be initiated by setting the TEMP_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[1]). Background temperature measurements are not available. In PSM2 operating mode, the 8052 is not active. Temperature conversions are available through the background measurement mode only.
*
Single Temperature Measurement
Set the TEMP_ADC_GO bit (Bit 1) in the start ADC measurement SFR (ADCGO, Address 0xD8) to obtain a temperature measurement (see Table 52). An interrupt is generated when the conversion is complete and when the temperature measurement is available in the temperature ADC value SFR (TEMPADC, Address 0xD7).
The temperature ADC value SFR (TEMPADC, Address 0xD7) is updated with a new value only when a temperature ADC interrupt occurs.
Temperature ADC Interrupt
The temperature ADC can generate an ADC interrupt when at least one of the following conditions occurs: * The difference between the new temperature ADC value and the last temperature ADC value generating an ADC interrupt is larger than the value set in the TEMP_DIFF bits. The temperature ADC conversion, initiated by setting start ADC measurement SFR (ADCGO, Address 0xD8), finishes.
Background Temperature Measurements
Background temperature measurements are disabled by default. To configure the background temperature measurement mode, set a temperature measurement interval in the peripheral ADC strobe period SFR (STRBPER, Address 0xF9). Temperature measurements are then performed periodically in the background (see Table 50). When a temperature conversion completes, the new temperature ADC value is compared to the last temperature ADC value that created an interrupt. If the absolute difference between the two values is greater than the setting of the TEMP_DIFF bits in the temperature and supply delta SFR (DIFFPROG, Address 0xF3[5:3]), a TEMPADC interrupt is generated (see Table 51). This allows temperature measurements to take place completely in the background, requiring MCU activity only if the temperature changes more than a configurable delta. To set up background temperature measurement 1. Initiate a single temperature measurement by setting the TEMP_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[1]). Upon completion of this measurement, configure the TEMP_DIFF bits in the temperature and supppy delta SFR (DIFFPROG, Address 0xF3[5:3]) to establish the change in temperature that triggers an interrupt. Set up the interval for background temperature measurements by configuring the TEMP_PERIOD bits in the peripheral ADC strobe period SFR (STRBPER, Address 0xF9[1:0]).
*
When the ADC interrupt occurs, a new value is available in the temperature ADC value SFR (TEMPADC, Address 0xD7). Note that there is no flag associated with this interrupt.
BATTERY MEASUREMENT
To provide a digital battery measurement, each ADE5166/ ADE5169/ADE5566/ADE5569 includes a dedicated ADC. The battery measurement is available in the 8-bit battery ADC value SFR (BATADC, Address 0xDF). The battery measurement has a resolution of 14.6 mV/LSB. A battery conversion can be initiated by two methods: a single battery measurement or background battery measurements.
Single Battery Measurement
To obtain a battery measurement, set the BATT_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[0]). An interrupt is generated when the conversion is done and when the battery measurement is available in the battery ADC value SFR (BATADC, Address 0xDF).
2.
Background Battery Measurements
To configure background measurements for the battery, establish a measurement interval in the peripheral ADC strobe period SFR (STRBPER, Address 0xF9). Battery measurements are then performed periodically in the background (see Table 50). When a battery conversion completes, the battery ADC value is compared to the low battery threshold, established in the battery detection threshold SFR (BATVTH, Address 0xFA). If the battery ADC value is below this threshold, a low battery flag is set. This low battery flag is the FBAT bit (Bit 2) in the power management interrupt flag SFR (IPSMF, Address 0xF8), used for power supply management. This low battery flag can be enabled to generate the PSM interrupt by setting the EBAT bit (Bit 2) in the power management interrupt enable SFR (IPSME, Address 0xEC).
3.
Temperature ADC in PSM0, PSM1, and PSM2 Modes
Depending on the operating mode of the ADE5166/ADE5169/ ADE5566/ADE5569, a temperature conversion is initiated only by certain actions. * In PSM0 operating mode, the 8052 is active. Temperature measurements are available in the background measurement mode and by initiating a single measurement.
Rev. B | Page 76 of 156
ADE5166/ADE5169/ADE5566/ADE5569
This method allows battery measurement to take place completely in the background, requiring MCU activity only if the battery drops below a user-specified threshold. To set up background battery measurements, follow these steps: 1. Configure the battery detection threshold SFR (BATVTH, Address 0xFA) to establish a low battery threshold. If the BATADC measurement is below this threshold, the FBAT bit (Bit 2) in the power management interrupt flag SFR (IPSMF, Address 0xF8) is set. Set up the interval for background battery measurements by configuring the BATT_PERIOD bits in the peripheral ADC strobe period SFR (STRBPER, Adress 0xF9[3:2]).
EXTERNAL VOLTAGE MEASUREMENT
The ADE5166/ADE5169/ADE5566/ADE5569 include a dedicated ADC to provide a digital measurement of an external voltage on the VDCIN pin. The 8-bit VDCINADC value SFR (VDCINADC, Address 0xEF) holds the results of the conversion. The resolution of the external voltage measurement is 15.3 mV/LSB. There are two ways to initiate an external voltage conversion: by using a single external voltage measurement or through background external voltage measurements.
2.
Single External Voltage Measurement
To obtain an external voltage measurement, set the VDCIN_ ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[2]). An interrupt is generated when the conversion is done and when the external voltage measurement is available in the VDCINADC value SFR (VDCINADC, Address 0xEF).
Battery ADC in PSM0, PSM1, and PSM2 Modes
Depending on the operating mode, a battery conversion is initiated only by certain actions. * In PSM0 operating mode, the 8052 is active. Battery measurements are available in the background measurement mode and by initiating a single measurement. In PSM1 operating mode, the 8052 is active, and the part is battery powered. Single battery measurements can be initiated by setting the BATT_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[0]). Background battery measurements are not available. In PSM2 operating mode, the 8052 is not active. Unlike temperature and VDCIN measurements, the battery conversions are not available in this mode.
Background External Voltage Measurements
Background external voltage measurements are disabled by default. To configure the background external voltage measurement mode, set an external voltage measurement interval in the peripheral ADC strobe period SFR (STRBPER, Address 0xF9). External voltage measurements are performed periodically in the background (see Table 50). When an external voltage conversion is complete, the new external voltage ADC value is compared to the last external voltage ADC value that created an interrupt. If the absolute difference between the two values is greater than the setting of the VDCIN_DIFF bits in the temperature and supply delta SFR (DIFFPROG, Address 0xF3[2:0]), a VDCINADC flag is set. This VDCINADC flag is FVADC (Bit 3) in the power management interrupt flag SFR (IPSMF, Address 0xF8), which is used for power supply management. This VDCINADC flag can be enabled to generate a PSM interrupt by setting the EVADC bit (Bit 3) in the power management interrupt enable SFR (IPSME, Address 0xEC). This method allows external voltage measurements to take place completely in the background, requiring MCU activity only if the external voltage has changed more than a configurable delta. To set up background external voltage measurements 1. Initiate a single external voltage measurement by setting the VDCIN_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[2]). Upon completion of this measurement, configure the VDCIN_DIFF bits in the temperature and supply delta SFR (DIFFPROG, Address 0xF3[2:0]) to establish the change in voltage that sets the FVADC bit in the power manage-ment interrupt flag SFR (IPSMF, Address 0xF8[3]). Set up the interval for the background external voltage measurements by configuring the VDCIN_PERIOD bits in the peripheral ADC strobe period SFR (STRBPER, Address 0xF9[5:4]).
*
*
Battery ADC Interrupt
The battery ADC can generate an ADC interrupt when at least one of the following conditions occurs: * The new battery ADC value is smaller than the value set in the battery detection threshold SFR (BATVTH, Address 0xFA), indicating a battery voltage loss. A single battery measurement, initiated by setting the BATT_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[0]), finishes.
*
When the battery flag (FBAT, Bit 2) is set in the power management interrupt flag SFR (IPSMF, Address 0xF8), a new ADC value is available in the battery ADC value SFR (BATADC, Address 0xDF). This battery flag can be enabled as a source of the PSM interrupt to generate a PSM interrupt every time the battery drops below a set voltage threshold or after a single conversion initiated by setting the BATT_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[0]) is ready. The battery ADC value SFR (BATADC, Address 0xDF) is updated with a new value only when the battery flag (FBAT) is set in the power management interrupt flag SFR (IPSMF, Address 0xF8).
2.
3.
Rev. B | Page 77 of 156
ADE5166/ADE5169/ADE5566/ADE5569
External Voltage ADC in PSM1 and PSM2 Modes
An external voltage conversion is initiated only by certain actions that depend on the operating mode of the ADE5166/ADE5169/ ADE5566/ADE5569. * In PSM0 operating mode, the 8052 is active. External voltage measurements are available in the background measurement mode and by initiating a single measurement. In PSM1 operating mode, the 8052 is active and the part is powered from battery. Single external voltage measurements can be initiated by setting VDCIN_ADC_GO in the start ADC measurement SFR (ADCGO, Address 0xD8[2]). Background external voltage measurements are not available. In PSM2 operating mode, the 8052 is not active. External voltage conversions are available through the background measurement mode only.
External Voltage ADC Interrupt
The external voltage ADC can generate an ADC interrupt when at least one of the following conditions occurs: * The difference between the new external voltage ADC value and the last external voltage ADC value generating an ADC interrupt is larger than the value set in the VDCIN_DIFF bits in the temperature and supply delta SFR (DIFFPROG, Address 0xF3[2:0]). The external voltage ADC conversion, initiated by setting the VDCIN_ADC_GO bit in the start ADC measurement SFR (ADCGO, Address 0xD8[2]), finishes.
*
*
*
When the ADC interrupt occurs, a new value is available in the VDCINADC value SFR (VDCINADC, Address 0xEF). Note that there is no flag associated with this interrupt.
The external voltage ADC in the VDCINADC value SFR (VDCINADC, Address 0xEF) is updated with a new value only when an external voltage ADC interrupt occurs.
Rev. B | Page 78 of 156
ADE5166/ADE5169/ADE5566/ADE5569 8052 MCU CORE ARCHITECTURE
The ADE5166/ADE5169/ADE5566/ADE5569 have an 8052 MCU core and use the 8051 instruction set. Some of the standard 8052 peripherals, such as the UART, have been enhanced. This section describes the standard 8052 core and enhancements that have been made to it in the ADE5166/ADE5169/ADE5566/ADE5569. The special function register (SFR) space is mapped into the upper 128 bytes of internal data memory space and is accessed by direct addressing only. It provides an interface between the CPU and all on-chip peripherals. See Figure 81 for a block diagram showing the programming model of the ADE5166/ADE5169/ADE5566/ ADE5569 via the SFR area. All registers except the program counter (PC), instruction register (IR), and the four general-purpose register banks reside in the SFR area. The SFRs include control, configuration, and data registers that provide an interface between the CPU and all onchip peripherals.
62kB ELECTRICALLY REPROGRAMMABLE NONVOLATILE FLASH/EE PROGRAM/DATA MEMORY 256 BYTES GENERALPURPOSE RAM ENERGY MEASUREMENT POWER MANAGEMENT RTC 8051-COMPATIBLE CORE PC IR 128-BYTE SPECIAL FUNCTION REGISTER AREA LCD DRIVER TEMPERATURE ADC BATTERY ADC 2kB XRAM OTHER ON-CHIP PERIPHERALS: SERIAL I/O WDT TIMERS
REGISTER BANKS
Figure 81. Block Diagram Showing Programming Model via the SFRs
MCU REGISTERS
The registers used by the MCU are summarized in Table 57.
Table 57. 8051 SFRs
SFR ACC B PSW PCON DPL DPH DPTR SP SPH STCON CFG Address 0xE0 0xF0 0xD0 0x87 0x82 0x83 0x82 and 0x83 0x81 0xB7 0xBF 0xAF Bit Addressable Yes Yes Yes No No No No No No No No Description Accumulator. Auxiliary math. Program status word (see Table 58). Program control (see Table 59). Data pointer low (see Table 60). Data pointer high (see Table 61). Data pointer (see Table 62). Stack pointer (see Table 63). Stack pointer high (see Table 64). Stack boundary (see Table 65). Configuration (see Table 66).
Table 58. Program Status Word SFR (PSW, Address 0xD0)
Bit 7 6 5 [4:3] Bit Address 0xD7 0xD6 0xD5 0xD4, 0xD3 Mnemonic CY AC F0 RS1, RS0 Description Carry flag. Modified by ADD, ADDC, SUBB, MUL, and DIV instructions. Auxiliary carry flag. Modified by ADD and ADDC instructions. General-purpose flag available to the user. Register bank select bits. RS1 RS0 Selected Bank 0 0 0 0 1 1 1 0 2 1 1 3 Overflow flag. Modified by ADD, ADDC, SUBB, MUL, and DIV instructions. General-purpose flag available to the user. Parity bit. The number of bits set in the accumulator added to the value of the parity bit is always an even number.
2 1 0
0xD2 0xD1 0xD0
OV F1 P
Rev. B | Page 79 of 156
07411-056
ADE5166/ADE5169/ADE5566/ADE5569
Table 59. Program Control SFR (PCON, Address 0x87)
Bit 7 [6:0] Mnemonic SMOD Reserved Default 0 0 Description Double baud rate control. Reserved. These bits must be kept at 0 for proper operation.
Table 60. Data Pointer Low SFR (DPL, Address 0x82)
Bit [7:0] Mnemonic DPL Default 0 Description These bits contain the low byte of the data pointer.
Table 61. Data Pointer High SFR (DPH, Address 0x83)
Bit [7:0] Mnemonic DPH Default 0 Description These bits contain the high byte of the data pointer.
Table 62. Data Pointer SFR (DPTR, Address 0x82 and Address 0x83)
Bit [15:0] Mnemonic DP Default 0 Description These bits contain the 2-byte address of the data pointer. DPTR is a combination of the DPH and DPL SFRs.
Table 63. Stack Pointer SFR (SP, Address 0x81)
Bit [7:0] Mnemonic SP Default 0 Description These bits contain the eight LSBs of the pointer for the stack.
Table 64. Stack Pointer High SFR (SPH, Address 0xB7)
Bit 7 6 5 4 3 2 1 0 Mnemonic Reserved SBFLG SSA[10] SSA[9] SSA[8] SP[10] SP[9] SP[8] Default 1 0 0 0 1 0 0 1 Description Reserved. This bit must be set to 1 for proper operation. Stack bottom flag. Stack Starting Address Bit 10. Stack Starting Address Bit 9. Stack Starting Address Bit 8. Stack Address Bit 10. Stack Address Bit 9. Stack Address Bit 8.
Table 65. Stack Boundary SFR (STCON, Address 0xBF)
Bit [7:3] 2 Mnemonic WTRLINE INT_RST Default 0 0 Description Contains the stack waterline setting bits. Interrupt/reset selection bit. INT_RST Result 0 An interrupt is issued when a stack violation occurs 1 A reset is issued when a stack violation occurs Stack boundary enable bit. Waterline flag.
1 0
SBE WTRLFG
0 0
Table 66. Configuration SFR (CFG, Address 0xAF)
Bit 7 6 Mnemonic Reserved EXTEN Default 1 0 Description Reserved. This bit should be left set for proper operation. Enhanced UART enable bit. EXTEN Result 0 Standard 8052 UART without enhanced error checking features 1 Enhanced UART with enhanced error checking (see the UART Additional Features section) Synchronous communication selection bit. SCPS Result 0 I2C port is selected for control of the shared I2C/SPI (MOSI, MISO, SCLK, and SS) pins and SFRs 1 SPI port is selected for control of the shared I2C/SPI (MOSI, MISO, SCLK, and SS) pins and SFRs
5
SCPS
0
Rev. B | Page 80 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Bit 4 Mnemonic MOD38EN Default 0 Description 38 kHz modulation enable bit. MOD38EN Result 0 38 kHz modulation is disabled 1 38 kHz modulation is enabled on the pins selected by the MOD38 bits in the EPCFG SFR (Address 0x9F[7:0]) Reserved. These bits should be kept at 0 for proper operation. XREN1, XREN0 Result XREN1 or XREN0 = 1 Enable MOVX instruction to use 256 bytes of extended RAM XREN1 and XREN0 = 0 Disable MOVX instruction
[3:2] [1:0]
Reserved XREN1, XREN0
00 01
BASIC 8052 REGISTERS
Program Counter (PC)
The program counter holds the 2-byte address of the next instruction to be fetched. The PC is initialized with 0x00 at reset and is incremented after each instruction is performed. Note that the amount that is added to the PC depends on the number of bytes in the instruction; therefore, the increment can range from one to three bytes. The program counter is not directly accessible to the user but can be directly modified by CALL and JMP instructions that change which part of the program is active.
B Register
The B register is used by the multiply and divide instructions, MUL AB and DIV AB, to hold one of the operands. Because it is not used for many instructions, it can be used as a scratch pad register like those in the register banks. The B register is stored in the SFR space (see Table 57).
Program Status Word (PSW)
The PSW SFR (PSW, Address 0xD0) reflects the status of arithmetic and logical operations through carry, auxiliary carry, and overflow flags. The parity flag reflects the parity of the contents of the accumulator, which can be helpful for communication protocols. The program status word SFR is bit addressable (see Table 58).
Instruction Register (IR)
The instruction register holds the opcode of the instruction being executed. The opcode is the binary code that results from assembling an instruction. This register is not directly accessible to the user.
Data Pointer (DPTR)
The data pointer SFR (DPTR, Address 0x82 and Address 0x83) is made up of two 8-bit registers: DPL (low byte, Address 0x82), and DPH (high byte, Address 0x83). These SFRs provide memory addresses for internal code and data access. The DPTR can be manipulated as a 16-bit register (DPTR = DPH, DPL) or as two independent 8-bit registers (DPH and DPL) (see Table 60 and Table 61). The 8052 MCU core architecture supports dual data pointers (see the 8052 MCU Core Architecture section).
Register Banks
There are four banks, each containing an 8-byte-wide register, for a total of 32 bytes of registers. These registers are convenient for temporary storage of mathematical operands. An instruction involving the accumulator and a register can be executed in one clock cycle, as opposed to two clock cycles, to perform an instruction involving the accumulator and a literal or a byte of general-purpose RAM. The register banks are located in the first 32 bytes of RAM. The active register bank is selected by RS0 and RS1 in the program status word SFR (PSW, Address 0xD0[4:3]).
Stack Pointer (SP)
The stack pointer SFR (SP, Address 0x81) keeps track of the current address of the top of the stack. To push a byte of data onto the stack, the stack pointer is incremented, and the data is moved to the new top of the stack. To pop a byte of data off the stack, the top byte of data is moved into the awaiting address, and the stack pointer is decremented. The stack uses a last in, first out (LIFO) method of data storage because the most recent addition to the stack is the first to come off it. The stack is used during CALL and RET instructions to keep track of the address to move into the PC when returning from the function call. The stack is also manipulated when vectoring for interrupts, to keep track of the prior state of the PC.
Accumulator
The accumulator is a working register, storing the results of many arithmetic or logical operations. The accumulator is used in more than half of the 8052 instructions, where it is usually referred to as A. The program status word SFR (PSW) constantly monitors the number of bits that are set in the accumulator to determine if it has even or odd parity. The accumulator is stored in the SFR space (see Table 57).
Rev. B | Page 81 of 156
ADE5166/ADE5169/ADE5566/ADE5569
The stack resides in the upper part of the extended internal RAM. The SP bits in the stack pointer SFR (SP, Address 0x81[7:0]) and the SP bits in the stack pointer high SFR (SPH, Address 0xB7[2:0]) hold the address of the stack in the extended RAM. The advantage of this solution is that the use of the general-purpose RAM can be limited to data storage. The use of the extended internal RAM can be limited to the stack or, alternatively, split between the stack and data storage if more space is required. This separation limits the chance of data corruption because the stack can be contained in the upper section of the XRAM and does not overflow into the lower section containing data. Data can still be stored in extended RAM by using the MOVX command. The default starting address for the stack is 0x100, electing the upper 1792 bytes of XRAM for the stack operation. The starting address can be reconfigured to reduce the stack by writing to the SSA bits in the stack pointer high SFR (SPH, Address 0xB7[5:3]). These three bits set the value of the three most significant bits of the stack pointer. For example, setting the SSA bits to a value of 110b moves the default starting address of the stack to 0x600, allowing the highest 512 bytes of the XRAM to be used for stack operation. If the stack reaches the top of the XRAM and overflows, the stack pointer rolls over to the default starting address that is written in the SSA bits (Address 0xB7[5:3]). Care should be taken if altering the default starting address of the stack because, should the stack overflow or underflow, unwanted overwrite operations may occur. The protection for both the waterline and the stack starting addresses are enabled simultaneously by setting the SBE bit in the STCON SFR (Address 0xBF[1]). When enabled, the stack boundary protection can be configured to either reset the part or trigger an interrupt when a stack violation occurs. The value of the INT_RST bit of the STCON SFR (Address 0xBF[2]) determines the response of the part. When STCON[2] is set to 0x1 and the stack pointer exceeds the waterline, the part resets immediately, no matter what other routines are in progress. If an attempt is made to move the stack pointer below the default stack starting address when STCON[2] is high, a reset also occurs. If an interrupt response is selected, the watchdog interrupt service routine is entered, assuming that there is no higher level interrupt currently being serviced. Note that when STCON[1] (SBE) is enabled, an interrupt (or reset) is triggered if the stack boundary is violated, regardless of the status of the EA bit in the interrupt enable SFR (IE, Address 0xA8[7]). This is because the watchdog interrupt is automatically configured as a high priority interrupt and, therefore, is not disabled by clearing EA. When STCON[1] is low, the feature is completely disabled, and no pending interrupts are generated. There are two separate flags associated with the stack boundary protection, allowing the cause of the violation to be determined. When the waterline is exceeded, a flag is set in WTRLFG of the stack boundary SFR (STCON, Address 0xBF[0]), indicating that the reset/interrupt was initiated by the stack waterline monitor. This flag remains high until the stack pointer falls below the waterline and the user clears the flag in software. A waterline or watchdog reset alone does not clear the flag. To successfully clear the flag, the software clear must occur while the stack pointer is below the waterline. Note that the stack pointer should never be altered while in the interrupt service routine. Doing so causes the program to return to a different section of the program and, therefore, malfunction. An external reset also causes the waterline flag to reset. When an attempt is made to move the stack pointer below the stack starting address, a flag (SBFLG) is set in the stack pointer high SFR (SPH, Address 0xB7[6]), indicating that the reset/interrupt was initiated by the stack bottom monitor. Once again, a boundary or watchdog reset alone does not clear this flag, and the user must clear the flag in software to successfully acknowledge the event. Note that if SPH[5:3] and SPH[2:0] are altered simultaneously to reduce the default stack starting address, a stack violation condition occurs when the stack boundary condition is enabled, and SPH[6] (the stack bottom flag, SBFLG) is initiated. To avoid this condition, it is recommended that the default stack starting address remain at 0x100 or be increased to further up the XRAM.
Stack Boundary Protection
As a warning signal that the stack pointer is extending outside the specified range, a stack boundary protection feature is included. This feature is controlled through the stack boundary SFR (STCON, Address 0xBF) and is disabled by default. To enable this feature, set the boundary protection enable bit (SBE, Bit 1) in the STCON SFR. The stack boundary protection works in two ways to protect the remainder of the XRAM from being corrupted. The waterline detection feature monitors the top of the stack and warns the user when the stack pointer is reaching the overflow point. By setting the WTRLINE bits in the STCON SFR (Address 0xBF[7:3]), the level of the waterline below the top of the XRAM can be set. For example, by setting STCON[7:3] to the maximum value of 0x1F, the waterline is set to its minimum value of 0x7FF - 0x1F = 0x7F0. Similarly, by setting STCON[7:3] to 0x1, the waterline is set at the top of the RAM space, Address 0x7FE. Note that if STCON[7:3] are set to 000b, the feature is effectively disabled and no interrupt or reset is generated. The bottom of the stack is also preserved by the stack boundary feature. Should the stack pointer be written to a value lower than the default stack starting address defined in Bits[5:3] of the SPH SFR, a warning is issued and the perpetrating command is ignored.
Rev. B | Page 82 of 156
ADE5166/ADE5169/ADE5566/ADE5569
A useful implementation of the waterline feature is to determine the amount of space required for the stack and allow a suitable default starting address to be selected. This optimizes the use of the additional XRAM space, allowing it to be used for data storage. To obtain this information, the waterline should be set to the estimated stack maximum and the interrupt enabled. If the stack exceeds the estimated maximum, the interrupt is triggered, and the waterline level should be increased in the interrupt service routine. Before returning to the main program, the waterline interrupt status flag (WTRLFG, Bit 0) of the stack boundary SFR (STCON, Address 0xBF) should be cleared. This program continues to jump to the waterline service routine until the stack no longer exceeds the waterline level and the maximum stack level is determined.
0x7FF 0x7FF-STCON[7:3] WATERLINE
Interrupt SFR
A two-tiered interrupt system is standard in the 8052 core. The priority level for each interrupt source is individually select-able as high or low. The ADE5166/ADE5169/ADE5566/ADE5569 enhance this interrupt system by creating, in essence, a third interrupt tier for a highest priority power supply management interrupt, PSM (see the Interrupt System section).
I/O Port SFRs
The 8052 core supports four I/O ports, P0 through P3, where Port 0 and Port 2 are typically used for access to external code and data spaces. The ADE5166/ADE5169/ADE5566/ADE5569, unlike standard 8052 products, provide internal nonvolatile flash memory so that an external code space is unnecessary. The on-chip LCD driver requires many pins, some of which are dedicated for LCD functionality and others that can be configured as LCD or general-purpose I/O. Due to the limited number of I/O pins, the ADE5166/ADE5169/ADE5566/ADE5569 do not allow access to external code and data spaces. The ADE5166/ADE5169/ADE5566/ADE5569 provide 20 pins that can be used for general-purpose I/O. These pins are mapped to Port 0, Port 1, and Port 2 and are accessed through three bitaddressable 8052 SFRs: P0, P1, and P2. Another enhanced feature of the ADE5166/ADE5169/ADE5566/ADE5569 is that the weak pull-ups standard on 8052 Port 1, Port 2, and Port 3 can be disabled to make open-drain outputs, as is standard on Port 0. The weak pull-ups can be enabled on a pin-by-pin basis (see the I/O Ports section).
{SPH[5:3], 0x00}
STACK STARTING ADDRESS
2kB OF ON-CHIP XRAM 0xFF 256 BYTES OF RAM (DATA) 0x00 0x00
07411-119
Figure 82. Extended Stack Pointer Operation
STANDARD 8052 SFRS
The standard 8052 SFRs include the accumulator (ACC), B, PSW, DPTR, and SP SFRs, as described in the Basic 8052 Registers section. The 8052 also defines standard timers, serial port interfaces, interrupts, I/O ports, and power-down modes.
Power Control Register (PCON, Address 0x87)
The 8052 core defines two power-down modes: power-down and idle. The ADE5166/ADE5169/ADE5566/ADE5569 enhance the power control capability of the traditional 8052 MCU with additional power management functions. The POWCON SFR (Address 0xC5) is used to define power control specific functionality for the ADE5166/ADE5169/ADE5566/ ADE5569. The program control SFR (PCON, Address 0x87) is not bit addressable (see the Power Management section). The ADE5166/ADE5169/ADE5566/ADE5569 provide many other peripherals not standard to the 8052 core, for example * * * * * * * * * * ADE energy measurement DSP Full RTC LCD driver Battery switchover/power management Temperature ADC Battery ADC SPI/I2C communication Flash memory controller Watchdog timer Secondary UART port
Timer SFRs
The 8052 contains three 16-bit timers, the identical Timer 0 and Timer 1, as well as a Timer 2. These timers can also function as event counters. Timer 2 has a capture feature in which the value of the timer can be captured in two 8-bit registers upon the assertion of an external input signal (see the Timers section).
Serial Port SFRs
The two full-duplex serial port peripherals each require two registers: one for setting up the baud rate and other communication parameters, and another register for the transmit/receive buffer. The ADE5166/ADE5169/ADE5566/ADE5569 also provide enhanced serial port functionality with a dedicated timer for baud rate generation with a fractional divisor and additional error detec-tion (see the UART Serial Interface section and the UART2 Serial Interface section.)
Rev. B | Page 83 of 156
ADE5166/ADE5169/ADE5566/ADE5569
MEMORY OVERVIEW
The ADE5166/ADE5169/ADE5566/ADE5569 contain three memory blocks, as follows: * * * 62 kB of on-chip Flash/EE program and data memory 256 bytes of general-purpose RAM 2 kB of extended internal RAM (XRAM) The 8052 core also has the means to access individual bits of certain addresses in the general-purpose RAM and special function memory spaces. The individual bits of general-purpose RAM, Address 0x20 to Address 0x2F, can be accessed through Bit Address 0x00 to Bit Address 0x7F. The benefit of bit addressing is that the individual bits can be accessed quickly, without the need for bit masking, which takes more code memory and execution time. The bit addresses for General-Purpose RAM Address 0x20 through General-Purpose RAM Address 0x2F can be seen in Figure 85.
BYTE ADDRESS 0x2F 0x2E 0x2D 0x2C 0x2B 0x2A
GENERAL-PURPOSE AREA
0x30 0x2F
The 256 bytes of general-purpose RAM share the upper 128 bytes of its address space with the SFRs. All of the memory spaces are shown in Figure 81. The addressing mode specifies which memory space to access.
BIT ADDRESSES (HEXA) 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05 7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 14 0C 04 7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 13 0B 03 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02 79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01 78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00
07411-060
General-Purpose RAM
General-purpose RAM resides in Memory Location 0x00 through Memory Location 0xFF. It contains the register banks.
0x7F
0x29 0x28 0x27 0x26
BANKS SELECTED VIA BITS IN PSW 11
BIT-ADDRESSABLE (BIT ADDRESSES)
0x20 0x1F 0x18 0x17
0x25 0x24 0x23 0x22 0x21 0x20
10
0x10 0x0F
Figure 85. Bit-Addressable Area of General-Purpose RAM
FOUR BANKS OF EIGHT REGISTERS R0 TO R7
01
0x08 0x07
07411-058
00
RESET VALUE OF STACK POINTER
Bit addressing can be used for instructions that involve Boolean variable manipulation and program branching (see the Instruction Set section).
0x00
Special Function Registers (SFRs)
Special function registers are registers that affect the function of the 8052 core or its peripherals. These registers are located in RAM at Address 0x80 through Address 0xFF. They are accessible only through direct addressing, as shown in Figure 84. The individual bits of some of the SFRs can be accessed for use in Boolean and program branching instructions. These SFRs are labeled as bit addressable, and the bit addresses are given in Table 15.
Figure 83. Lower 128 Bytes of Internal Data Memory
Address 0x80 through Address 0xFF of general-purpose RAM are shared with the SFRs. The mode of addressing determines which memory space is accessed, as shown in Figure 84.
0xFF ACCESSIBLE BY INDIRECT ADDRESSING ONLY 0x80 0x7F ACCESSIBLE BY DIRECT AND INDIRECT ADDRESSING
07411-120
ACCESSIBLE BY DIRECT ADDRESSING ONLY
Extended Internal RAM (XRAM)
The ADE5166/ADE5169/ADE5566/ADE5569 provide 2 kB of extended on-chip RAM. No external RAM is supported. This RAM is located in Address 0x00 through Address 0x7FF in the extended RAM space. To select the extended RAM memory space, the extended indirect addressing modes are used.
0x7FF 2kB OF EXTENDED INTERNAL RAM (XRAM) 0x00
0x00 GENERAL-PURPOSE RAM SPECIFIC FUNCTION REGISTERS (SFRs)
Figure 84. General-Purpose RAM and SFR Memory Address Overlap
Both direct and indirect addressing can be used to access generalpurpose RAM from Address 0x00 through Address 0x7F, but indirect addressing must be used to access general-purpose RAM with addresses in the range from 0x80 through 0xFF because they share the same address space with the SFRs.
Figure 86. Extended Internal RAM (XRAM) Space
Rev. B | Page 84 of 156
07411-061
ADE5166/ADE5169/ADE5566/ADE5569
Code Memory
Code and data memory is stored in the 62 kB flash memory space. No external code memory is supported. To access code memory, code indirect addressing is used. Indirect addressing allows addresses to be computed and is useful for indexing into data arrays stored in RAM. Note that an instruction that refers to Address 0x00 through Address 0x7F is referring to internal RAM, and indirect or direct addressing modes can be used. An instruction with indirect addressing that uses an address between 0x80 and 0xFF is referring to internal RAM, not to an SFR.
ADDRESSING MODES
The 8052 core provides several addressing modes. The addressing mode determines how the core interprets the memory location or data value specified in assembly language code. There are six addressing modes, as shown in Table 67.
Table 67. 8052 Addressing Modes
Addressing Mode Immediate Direct Example MOV A, #A8h MOV DPTR, #A8h MOV A, A8h MOV A, IE MOV A, R0 MOV A, @R0 MOVX A, @DPTR MOVX A, @R0 MOVC A, @A+DPTR MOVC A, @A+PC JMP @A+DPTR Bytes 2 3 2 2 1 1 1 1 1 1 1 Core Clock Cycles 2 3 2 2 1 2 4 4 4 4 3
Extended Direct Addressing
The DPTR register is used to access extended internal RAM in extended indirect addressing mode. The ADE5166/ADE5169/ ADE5566/ADE5569 provide 2 kB of extended internal RAM (XRAM), accessed through MOVX instructions. External memory spaces are not supported on the ADE5166/ADE5169/ ADE5566/ADE5569. In extended direct addressing mode, the DPTR register points to the address of the byte of extended RAM. The following code moves the contents of extended RAM Address 0x100 to the accumulator:
MOV MOVX DPTR,#100h A,@DPTR
Indirect Extended Direct Extended Indirect Code Indirect
These two instructions require a total of seven clock cycles and four bytes of storage in the program memory.
Immediate Addressing
In immediate addressing, the expression entered after the number sign (#) is evaluated by the assembler and stored in the memory address specified. This number is referred to as a literal because it refers only to a value and not to a memory location. Instructions using this addressing mode are slower than those between two registers because the literal must be stored and fetched from memory. The expression can be entered as a symbolic variable or an arithmetic expression; the value is computed by the assembler.
Extended Indirect Addressing
The extended internal RAM is accessed through a pointer to the address in indirect addressing mode. The ADE5166/ADE5169/ ADE5566/ADE5569 provide 2 kB of extended internal RAM, accessed through MOVX instructions. External memory is not supported on the ADE5166/ADE5169/ADE5566/ADE5569. In extended indirect addressing mode, a register holds the address of the byte of extended RAM. The following code moves the contents of extended RAM Address 0x80 to the accumulator:
MOV MOVX R0, #80h A, @R0
Direct Addressing
With direct addressing, the value at the source address is moved to the destination address. Direct addressing provides the fastest execution time of all the addressing modes when an instruction is performed between registers using direct addressing. Note that indirect or direct addressing modes can be used to access generalpurpose RAM Address 0x00 through Address 0x7F. An instruction with direct addressing that uses an address between 0x80 and 0xFF is referring to a special function memory location.
These two instructions require six clock cycles and three bytes of storage. Note that there are 2 kB of extended RAM, so both extended direct and extended indirect addressing can cover the whole address range. There is a storage and speed advantage to using extended indirect addressing because the additional byte of addressing available through the DPTR register that is not needed is not stored. From the three examples demonstrating the access of internal RAM from 0x80 through 0xFF and extended internal RAM from 0x00 through 0xFF, it can be seen that it is most efficient to use the entire internal RAM accessible through indirect access before moving to extended RAM.
Indirect Addressing
With indirect addressing, the value pointed to by the register is moved to the destination address. For example, to move the contents of internal RAM Address 0x82 to the accumulator, use the following two instructions, which require a total of four clock cycles and three bytes of storage in the program memory:
MOV MOV R0,#82h A,@R0
Rev. B | Page 85 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Code Indirect Addressing
The internal code memory can be accessed indirectly. This can be useful for implementing lookup tables and other arrays of constants that are stored in flash memory. For example, to move the data stored in flash memory at Address 0x8002 into the accumulator,
MOV CLR MOVX DPTR,#8002h A A,@A+DPTR
The accumulator can be used as a variable index into the array of flash memory located at DPTR.
INSTRUCTION SET
Table 68 documents the number of clock cycles required for each instruction. Most instructions are executed in one or two clock cycles, resulting in a 4-MIPS peak performance. Note that, throughout this section, A represents the accumulator.
Table 68. Instruction Set
Mnemonic Arithmetic ADD A, Rn ADD A, @Ri ADD A, dir ADD A, #data ADDC A, Rn 1 1 ADDC A, @Ri ADDC A, dir ADDC A, #data SUBB A, Rn SUBB A, @Ri SUBB A, dir SUBB A, #data INC A INC Rn INC @Ri INC dir INC DPTR DEC A DEC Rn DEC @Ri DEC dir MUL AB DIV AB DA A Logic ANL A, Rn ANL A, @Ri ANL A, dir ANL A, #data ANL dir, A ANL dir, #data ORL A, Rn ORL A, @Ri ORL A, dir ORL A, #data ORL dir, A ORL dir, #data XRL A, Rn XRL A, @Ri XRL A, #data XRL dir, A Description Add register to A Add indirect memory to A Add direct byte to A Add immediate to A Add register to A with carry Add indirect memory to A with carry Add direct byte to A with carry Add immediate to A with carry Subtract register from A with borrow Subtract indirect memory from A with borrow Subtract direct from A with borrow Subtract immediate from A with borrow Increment A Increment register Ri increment indirect memory Increment direct byte Increment data pointer Decrement A Decrement register Decrement indirect memory Decrement direct byte Multiply A by B Divide A by B Decimal Adjust A AND register to A AND indirect memory to A AND direct byte to A AND immediate to A AND A to direct byte AND immediate data to direct byte OR register to A OR indirect memory to A OR direct byte to A OR immediate to A OR A to direct byte OR immediate data to direct byte Exclusive-OR register to A Exclusive-OR indirect memory to A Exclusive-OR immediate to A Exclusive-OR A to direct byte
Rev. B | Page 86 of 156
Bytes 1 1 2 2 1 1 2 2 1 1 2 2 1 1 1 2 1 1 1 1 2 1 1 1 1 1 2 2 2 3 1 1 2 2 2 3 1 2 2 2
Cycles 1 2 2 2 1 2 2 2 1 2 2 2 1 1 2 2 3 1 1 2 2 9 9 2 1 2 2 2 2 3 1 2 2 2 2 3 1 2 2 2
ADE5166/ADE5169/ADE5566/ADE5569
Mnemonic XRL A, dir XRL dir, #data CLR A CPL A SWAP A RL A RLC A RR A RRC A Data Transfer MOV A, Rn MOV A, @Ri MOV Rn, A MOV @Ri, A MOV A, dir MOV A, #data MOV Rn, #data MOV dir, A MOV Rn, dir MOV dir, Rn MOV @Ri, #data MOV dir, @Ri MOV @Ri, dir MOV dir, dir MOV dir, #data MOV DPTR, #data MOVC A, @A+DPTR MOVC A, @A+PC MOVX A, @Ri MOVX A, @DPTR MOVX @Ri, A MOVX @DPTR, A PUSH dir POP dir XCH A, Rn XCH A, @Ri XCHD A, @Ri XCH A, dir Boolean CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit OR MOV C, bit MOV bit, C Description Exclusive-OR indirect memory to A Exclusive-OR immediate data to direct Clear A Complement A Swap nibbles of A Rotate A left Rotate A left through carry Rotate A right Rotate A right through carry Move register to A Move indirect memory to A Move A to register Move A to indirect memory Move direct byte to A Move immediate to A Move register to immediate Move A to direct byte Move register to direct byte Move direct to register Move immediate to indirect memory Move indirect to direct memory Move direct to indirect memory Move direct byte to direct byte Move immediate to direct byte Move immediate to data pointer Move code byte relative DPTR to A Move code byte relative PC to A Move external (A8) data to A Move external (A16) data to A Move A to external data (A8) Move A to external data (A16) Push direct byte onto stack Pop direct byte from stack Exchange A and register Exchange A and indirect memory Exchange A and indirect memory nibble Exchange A and direct byte Clear carry Clear direct bit Set carry Set direct bit Complement carry Complement direct bit AND direct bit and carry AND direct bit inverse to carry OR direct bit and carry Direct bit inverse to carry Move direct bit to carry Move carry to direct bit Bytes 2 3 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 1 1 1 1 1 1 2 2 1 1 1 2 1 2 1 2 1 2 2 2 2 2 2 2 Cycles 2 3 1 1 1 1 1 1 1 1 2 1 2 2 2 2 2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 2 2 1 2 2 2 1 2 1 2 1 2 2 2 2 2 2 2
Rev. B | Page 87 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Mnemonic Branching JMP @A+DPTR RET RETI ACALL addr11 AJMP addr11 SJMP rel JC rel JNC rel JZ rel JNZ rel DJNZ Rn, rel LJMP LCALL addr16 JB bit, rel JNB bit, rel JBC bit, rel CJNE A, dir, rel CJNE A, #data, rel CJNE Rn, #data, rel CJNE @Ri, #data, rel DJNZ dir, rel Miscellaneous NOP Description Jump indirect relative to DPTR Return from subroutine Return from interrupt Absolute jump to subroutine Absolute jump unconditional Short jump (relative address) Jump on carry equal to 1 Jump on carry = 0 Jump on accumulator = 0 Jump on accumulator 0 Decrement register, JNZ relative Long jump unconditional Long jump to subroutine Jump on direct bit = 1 Jump on direct bit = 0 Jump on direct bit = 1 and clear Compare A, direct JNE relative Compare A, immediate JNE relative Compare register, immediate JNE relative Compare indirect, immediate JNE relative Decrement direct byte, JNZ relative No operation Bytes 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 1 Cycles 3 4 4 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 1
READ-MODIFY-WRITE INSTRUCTIONS
Some 8052 instructions read the latch and others read the pin. The state of the pin is read for instructions that input a port bit. Instructions that read the latch rather than the pins are the ones that read a value, possibly change it, and rewrite it to the latch. Because these instructions involve modifying the port, it is assumed that the pins being modified are outputs, so the output state of the pin is read from the latch. This prevents a possible misinterpretation of the voltage level of a pin. For example, if a port pin is used to drive the base of a transistor, a 1 is written to the bit to turn on the transistor. If the CPU reads the same port bit at the pin rather than the latch, it reads the base voltage of the transistor and interprets it as Logic 0. Reading the latch rather than the pin returns the correct value of 1. The instructions that read the latch rather than the pins are called read-modify-write instructions and are listed in Table 69. When the destination operand is a port or a port bit, these instructions read the latch rather than the pin.
Table 69. Read-Modify-Write Instructions
Instruction ANL ORL XRL JBC CPL INC DEC DJNZ MOV PX.Y, C1 CLR PX.Y1 SETB PX.Y1
1
Example ANL P0, A ORL P1, A XRL P2, A JBC P1.1, LABEL CPL P2.0 INC P2 DEC P2 DJNZ P0, LABEL MOV P0.0, C CLR P0.0 SETB P0.0
Description Logic AND Logic OR Logic XOR Jump if Bit = 1 and clear bit Complement bit Increment Decrement Decrement and jump if not zero Move carry to Bit Y of Port X Clear Bit Y of Port X Set Bit Y of Port X
These instructions read the port byte (all eight bits), modify the addressed bit, and write the new byte back to the latch.
Rev. B | Page 88 of 156
ADE5166/ADE5169/ADE5566/ADE5569
INSTRUCTIONS THAT AFFECT FLAGS
Many instructions explicitly modify the carry bit, such as the MOV C bit and CLR C instructions. Other instructions that affect status flags are listed in this section.
MUL AB
This instruction multiplies the accumulator by the B SFR. This operation is unsigned. The lower byte of the 16-bit product is stored in the accumulator and the higher byte is left in the B register. No status flags are referenced by the instruction.
Table 73. MUL AB Affected Status Flags
Flag C OV Description Cleared. Set if the result is greater than 255. Cleared otherwise.
ADD A, Source
This instruction adds the source to the accumulator. No status flags are referenced by the instruction.
Table 70. ADD A (Source) Affected Status Flags
Flag C OV Description Set if there is a carry out of Bit 7. Cleared otherwise. Used to indicate an overflow if the operands are unsigned. Set if there is a carry out of Bit 6 or a carry out of Bit 7, but not if both are set. Used to indicate an overflow for signed addition. This flag is set if two positive operands yield a negative result or if two negative operands yield a positive result. Set if there is a carry out of Bit 3. Cleared otherwise.
DIV AB
This instruction divides the accumulator by the B SFR. This operation is unsigned. The integer part of the quotient is stored in the accumulator and the remainder goes into the B register. No status flags are referenced by the instruction.
Table 74. DIV AB Affected Status Flags
Flag C OV Description Cleared. Cleared unless the B register is equal to 0, in which case the results of the division are undefined and the OV flag is set.
AC
ADDC A, Source
This instruction adds the source and the carry bit to the accumulator. The carry status flag is referenced by the instruction.
Table 71. ADDC A (Source) Affected Status Flags
Flag C OV Description Set if there is a carry out of Bit 7. Cleared otherwise. Used to indicate an overflow if the operands are unsigned. Set if there is a carry out of Bit 6 or a carry out of Bit 7, but not if both are set. Used to indicate an overflow for signed addition. This flag is set if two positive operands yield a negative result or if two negative operands yield a positive result. Set if there is a carry out of Bit 3. Cleared otherwise.
DA A
This instruction adjusts the accumulator to hold two 4-bit digits after the addition of two binary coded decimals (BCDs) with the ADD or ADDC instructions. If the AC bit is set or if the value of Bit 0 to Bit 3 exceeds 9, 0x06 is added to the accumulator to correct the lower four bits. If the carry bit is set when the instruction begins, or if 0x06 is added to the accumulator in the first step, 0x60 is added to the accumulator to correct the higher four bits. The carry and AC status flags are referenced by this instruction.
AC
SUBB A, Source
This instruction subtracts the source byte and the carry (borrow) flag from the accumulator. It references the carry (borrow) status flag.
Table 72. SUBB A (Source) Affected Status Flags
Flag C Description Set if there is a borrow needed for Bit 7. Cleared otherwise. Used to indicate an overflow if the operands are unsigned. Set if there is a borrow needed for Bit 6 or Bit 7, but not for both. Used to indicate an overflow for signed subtraction. This flag is set if a negative number subtracted from a positive number yields a negative result or if a positive number subtracted from a negative number yields a positive result. Set if a borrow is needed for Bit 3. Cleared otherwise.
Table 75. DA A Affected Status Flag
Flag C Description Set if the result is greater than 0x99. Cleared otherwise.
RRC A
This instruction rotates the accumulator to the right through the carry flag. The old LSB of the accumulator becomes the new carry flag, and the old carry flag is loaded into the new MSB of the accumulator. The carry status flag is referenced by this instruction.
Table 76. RRC A Affected Status Flag
Flag C Description Equal to the state of ACC[0] before execution of the instruction.
OV
AC
Rev. B | Page 89 of 156
ADE5166/ADE5169/ADE5566/ADE5569
RLC A
This instruction rotates the accumulator to the left through the carry flag. The old MSB of the accumulator becomes the new carry flag, and the old carry flag is loaded into the new LSB of the accumulator. The carry status flag is referenced by this instruction.
Table 77. RLC A Affected Status Flag
Flag C Description Equal to the state of ACC[7] before execution of the instruction.
CJNE Destination, Source, Relative Jump
This instruction compares the source value to the destination value and branches to the location set by the relative jump if they are not equal. If the values are equal, program execution continues with the instruction after the CJNE instruction. No status flags are referenced by this instruction.
Table 78. CJNE Destination (Source, Relative Jump) Affected Status Flag
Flag C Description Set if the source value is greater than the destination value. Cleared otherwise.
Rev. B | Page 90 of 156
ADE5166/ADE5169/ADE5566/ADE5569 DUAL DATA POINTERS
Each ADE5166/ADE5169/ADE5566/ADE5569 incorporates two data pointers. The second data pointer is a shadow data pointer and is selected via the data pointer control SFR (DPCON, Address 0xA7). DPCON features automatic hardware postincrement and postdecrement, as well as an automatic data pointer toggle. Note that this is the only section of the data sheet where the main and shadow data pointers are distinguished. Whenever the data pointer (DPTR) is mentioned elsewhere in the data sheet, active DPTR is implied. In addition, only the MOVC/MOVX @DPTR instructions automatically postincrement and postdecrement the DPTR. Other MOVC/MOVX instructions, such as MOVC PC or MOVC @Ri, do not cause the DPTR to automatically postincrement and postdecrement. To illustrate the operation of DPCON, the following code copies 256 bytes of code memory at Address 0xD000 into XRAM, starting from Address 0x0000:
MOV DPTR,#0 MOV DPCON,#55H ;Main DPTR = 0 ;Select shadow DPTR
;DPTR1 increment mode ;DPTR0 increment mode ;DPTR auto toggling ON MOV DPTR,#0D000H MOVELOOP: CLR A MOVC A,@A+DPTR ;Post Inc DPTR ;Swap to Main DPTR(Data) MOVX @DPTR,A ;Increment main DPTR ;Swap Shadow DPTR(Code) MOV A, DPL JNZ MOVELOOP ;Put ACC in XRAM ;Get data ;DPTR = D000H
Table 79. Data Pointer Control SFR (DPCON, Address 0xA7)
Bit 7 6 [5:4] Mnemonic DPT DP1m1, DP1m0 Default 0 0 0 Description Not implemented. Write don't care. Data pointer automatic toggle enable. Cleared by the user to disable autoswapping of the DPTR. Set in user software to enable automatic toggling of the DPTR after each MOVX or MOVC instruction. Shadow data pointer mode. These bits enable extra modes of the shadow data pointer operation, allowing more compact and more efficient code size and execution. DP1m1 DP1m0 Result (Behavior of the Shadow Data Pointer) 0 0 8052 behavior. 0 1 DPTR is postincremented after a MOVX or MOVC instruction. 1 0 DPTR is postdecremented after a MOVX or MOVC instruction. 1 1 DPTR LSB is toggled after a MOVX or MOVC instruction. This instruction can be useful for moving 8-bit blocks to/from 16-bit devices. Main data pointer mode. These bits enable extra modes of the main data pointer operation, allowing more compact and more efficient code size and execution. DP0m1 DP0m0 Result (Behavior of the Main Data Pointer) 0 0 8052 behavior. 0 1 DPTR is postincremented after a MOVX or MOVC instruction. 1 0 DPTR is postdecremented after a MOVX or MOVC instruction. 1 1 DPTR LSB is toggled after a MOVX or MOVC instruction. This instruction is useful for moving 8-bit blocks to/from 16-bit devices. Not implemented. Write don't care. Data pointer select. Cleared by the user to select the main data pointer, meaning that the contents of this 16-bit register are placed into the DPL SFR and DPH SFR. Set by the user to select the shadow data pointer, meaning that the contents of a separate 16-bit register appear in the DPL SFR and DPH SFR.
[3:2]
DP0m1, DP0m0
0
1 0
DPSEL
0 0
Rev. B | Page 91 of 156
ADE5166/ADE5169/ADE5566/ADE5569 INTERRUPT SYSTEM
The unique power management architecture of the ADE5166/ ADE5169/ADE5566/ADE5569 includes an operating mode (PSM2) where the 8052 MCU core is shut down. Events can be configured to wake the 8052 MCU core from the PSM2 operating mode. A distinction is drawn here between events that can trigger the wake-up of the 8052 MCU core and events that can trigger an interrupt when the MCU core is active. Events that can wake the core are referred to as wake-up events, whereas events that can interrupt the program flow when the MCU is active are called interrupts. See the 3.3 V Peripherals and Wake-Up Events section to learn more about events that can wake the 8052 core from PSM2 mode. The ADE5166/ADE5169/ADE5566/ADE5569 provide 12 interrupt sources with three priority levels. The power management interrupt is at the highest priority level. The other two priority levels are configurable through the interrupt priority SFR (IP, Address 0xB8) and the Interrupt Enable and Priority 2 SFR (IEIP2, Address 0xA9). A Priority 1 interrupt can interrupt the service routine of a Priority 0 interrupt, and if two interrupts of different priorities occur at the same time, the Priority 1 interrupt is serviced first. An interrupt cannot be interrupted by another interrupt of the same priority level. If two interrupts of the same priority level occur simultaneously, a polling sequence is observed (see the Interrupt Priority section).
INTERRUPT ARCHITECTURE
The ADE5166/ADE5169/ADE5566/ADE5569 possess advanced power supply management features. To ensure a fast response to time-critical power supply issues, such as a loss of line power, the power supply management interrupt should be able to interrupt any interrupt service routine. To enable the user to have full use of the standard 8052 interrupt priority levels, an additional priority level is added for the power supply management (PSM) interrupt. The PSM interrupt is the only interrupt at this highest interrupt priority level.
HIGH PSM PRIORITY 1 LOW PRIORITY 0
07411-063
STANDARD 8052 INTERRUPT ARCHITECTURE
The 8052 standard interrupt architecture includes two tiers of interrupts, where some interrupts are assigned a high priority and others are assigned a low priority.
HIGH PRIORITY 1 PRIORITY 0
07411-062
Figure 88. Interrupt Architecture
See the Power Supply Management (PSM) Interrupt section for more information on the PSM interrupt.
LOW
Figure 87. Standard 8052 Interrupt Priority Levels
INTERRUPT REGISTERS
The control and configuration of the interrupt system are carried out via four interrupt-related SFRs, which are discussed in this section.
Table 80. Interrupt SFRs
SFR IE IP IEIP2 WDCON Address 0xA8 0xB8 0xA9 0xC0 Default 0x00 0x00 0xA0 0x10 Bit Addressable Yes Yes No Yes Description Interrupt enable (see Table 81). Interrupt priority (see Table 82). Interrupt Enable and Priority 2 (see Table 83). Watchdog timer (see Table 88 and the Writing to the Watchdog Timer SFR (WDCON, Address 0XC0) section).
Table 81. Interrupt Enable SFR (IE, Address 0xA8)
Bit 7 6 5 4 3 2 1 0 Bit Address 0xAF 0xAE 0xAD 0xAC 0xAB 0xAA 0xA9 0xA8 Mnemonic EA ETEMP ET2 ES ET1 EX1 ET0 EX0 Description Enables all interrupt sources. Set by the user. Cleared by the user to disable all interrupt sources. Enables the temperature ADC interrupt. Set by the user. Enables the Timer 2 interrupt. Set by the user. Enables the UART serial port interrupt. Set by the user. Enables the Timer 1 interrupt. Set by the user. Enables the External Interrupt 1 (INT1). Set by the user. Enables the Timer 0 interrupt. Set by the user. Enables External Interrupt 0 (INT0). Set by the user.
Rev. B | Page 92 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 82. Interrupt Priority SFR (IP, Address 0xB8)
Bit 7 6 5 4 3 2 1 0 Bit Address 0xBF 0xBE 0xBD 0xBC 0xBB 0xBA 0xB9 0xB8 Mnemonic PADE PTEMP PT2 PS PT1 PX1 PT0 PX0 Description ADE energy measurement interrupt priority (1 = high, 0 = low). Temperature ADC interrupt priority (1 = high, 0 = low). Timer 2 interrupt priority (1 = high, 0 = low). UART serial port interrupt priority (1 = high, 0 = low). Timer 1 interrupt priority (1 = high, 0 = low). INT1 (External Interrupt 1) priority (1 = high, 0 = low). Timer 0 interrupt priority (1 = high, 0 = low). INT0 (External Interrupt 0) priority (1 = high, 0 = low).
Table 83. Interrupt Enable and Priority 2 SFR (IEIP2, Address 0xA9)
Bit 7 6 5 4 3 2 1 0 Mnemonic PS2 PTI ES2 PSI EADE ETI EPSM ESI Description UART2 serial port interrupt priority (1 = high, 0 = low). RTC interrupt priority (1 = high, 0 = low). Enables the UART2 serial port interrupt. Set by the user. SPI/I2C interrupt priority (1 = high, 0 = low). Enables the energy metering interrupt (ADE). Set by the user. Enables the RTC interval timer interrupt. Set by the user. Enables the PSM power supply management interrupt. Set by the user. Enables the SPI/I2C interrupt. Set by the user.
INTERRUPT PRIORITY
If two interrupts of the same priority level occur simultaneously, the polling sequence is observed as shown in Table 84.
Table 84. Priority Within Interrupt Level
Source IPSM IRTC IADE WDT ITEMP IE0 TF0 IE1 TF1 ISPI/I2CI RI/TI TF2/EXF2 RI2/TI2 Priority 0 (highest) 1 2 3 4 5 6 7 8 9 10 11 12 (lowest) Description Power supply management interrupt. RTC interval timer interrupt. ADE energy measurement interrupt. Watchdog timer overflow interrupt. Temperature ADC interrupt. External Interrupt 0. Timer/Counter 0 interrupt. External Interrupt 1. Timer/Counter 1 interrupt. SPI/I2C interrupt. UART serial port interrupt. Timer/Counter 2 interrupt. UART2 serial port interrupt.
Rev. B | Page 93 of 156
ADE5166/ADE5169/ADE5566/ADE5569
INTERRUPT FLAGS
The interrupt flags and status flags associated with the interrupt vectors are shown in Table 85 and Table 86, respectively. Most of the interrupts have flags associated with them.
Table 85. Interrupt Flags
Interrupt Source IE0 TF0 IE1 TF1 RI + TI RI2 + TI2 TF2 + EXF2 ITEMP (Temperature ADC) IPSM (Power Supply) IADE (Energy Measurement DSP) Flag TCON[1] TCON[5] TCON[3] TCON[7] SCON[1] SCON[0] SCON2[1] SCON2[0] T2CON[7] T2CON[6] N/A IPSMF[6] MIRQSTL[7] Bit Name IE0 TF0 IE1 TF1 TI RI TI2 RI2 TF2 EXF2 N/A FPSM ADEIRQFLAG Description External Interrupt 0. Timer 0. External Interrupt 1. Timer 1. Transmit interrupt. Receive interrupt. Transmit 2 interrupt. Receive 2 interrupt. Timer 2 overflow flag. Timer 2 external flag. Temperature ADC interrupt. Does not have an interrupt flag associated with it. PSM interrupt flag. Read MIRQSTH, MIRQSTM, MIRQSTL.
Table 86. Status Flags
Interrupt Source ITEMP (Temperature ADC) ISPI/I2CI IRTC (RTC Interval Timer) WDT (Watchdog Timer)
1
Flag N/A SPI2CSTAT 1 SPI2CSTAT TIMECON[6] TIMECON[2] WDCON[2]
Bit Name N/A N/A N/A ALFLAG ITFLAG WDS
Description Temperature ADC interrupt. Does not have a status flag associated with it. SPI interrupt status register. I2C interrupt status register. RTC alarm flag. RTC interrupt flag. Watchdog timeout flag.
There is no specific flag for ISPI/I2CI; however, all flags for SPI2CSTAT need to be read to assess the reason for the interrupt.
A functional block diagram of the interrupt system is shown in Figure 89. Note that the PSM interrupt is the only interrupt in the highest priority level. If an external wake-up event occurs to wake the ADE5166/ ADE5169/ADE5566/ADE5569 from PSM2 mode, a pending external interrupt is generated. When the EX0 bit (Bit 0) or the EX1 bit (Bit 2) in the interrupt enable SFR (IE, Address 0xA8) is set to enable external interrupts, the program counter is loaded with the IE0 or IE1 interrupt vector. The IE0 and IE1 interrupt flags (Bit 1 and Bit 3, respectively) in the Timer/Counter 0 and Timer/Counter 1 control SFR (TCON, Address 0x88) are not affected by events that occur when the 8052 MCU core is shut down during PSM2 mode (see the Power Supply Management (PSM) Interrupt section). The temperature ADC and I2C/SPI interrupts are latched such that pending interrupts cannot be cleared without entering their respective interrupt service routines. Clearing the I2C/SPI status bits in the SPI interrupt status SFR (SPISTAT, Address 0xEA) does not cancel a pending I2C/SPI interrupt. These interrupts
remain pending until the I2C/SPI interrupt vectors are enabled. Their respective interrupt service routines are entered shortly thereafter. The RTC interrupts are driven by the alarm and interval flags. Pending RTC interrupts can be cleared without entering the interrupt service routine by clearing the corresponding RTC flag in software. Entering the interrupt service routine alone does not clear the RTC interrupt. Figure 89 shows how the interrupts are cleared when the interrupt service routines are entered. Some interrupts with multiple interrupt sources are not automatically cleared, specifically, the PSM, ADE, UART, UART2, and Timer 2 interrupt vectors. Note that the INT0 and INT1 interrupts are cleared only if the external interrupt is configured to be triggered by a falling edge by setting IT0 (Bit 0) and IT1 (Bit 2) in the Timer/Counter 0 and Timer/ Counter 1 control SFR (TCON, Address 0x88). If INT0 or INT1 is configured to interrupt on a low level, the interrupt service routine is reentered until the respective pin goes high.
Rev. B | Page 94 of 156
ADE5166/ADE5169/ADE5566/ADE5569
IE/IEIP2 REGISTERS PSM IPSMF IPSME FPSM (IPSMF[6]) IP/IEIP2 REGISTERS PRIORITY LEVEL LOW HIGH HIGHEST
RTC
INTERVAL ALARM
ADE
MIRQSTH MIRQENH
MIRQSTM MIRQENM
MIRQSTL MIRQENL
MIRQSTL[7]
WATCHDOG
WATCHDOG TIMEOUT WDIR
TEMP ADC
TEMPADC INTERRUPT
IN/OUT LATCH RESET
EXTERNAL INTERRUPT 0
INT0
IT0 0 1 IT0
PSM2 IE0
TIMER 0
TF0
INTERRUPT POLLING SEQUENCE
EXTERNAL INTERRUPT 1
IT1 INT1 0 1 IT1
PSM2 IE1
TF1 TIMER 1
SPI INTERRUPT CFG[5] I2C/SPI
1 0
I2C INTERRUPT
IN/OUT LATCH RESET
UART
RI TI TF2 EXF2
TIMER 2
UART2
RI2 TI2
INDIVIDUAL INTERRUPT ENABLE GLOBAL INTERRUPT ENABLE (EA)
LEGEND AUTOMATIC CLEAR SIGNAL
07411-064
Figure 89. Interrupt System Functional Block Diagram
Rev. B | Page 95 of 156
ADE5166/ADE5169/ADE5566/ADE5569
INTERRUPT VECTORS
When an interrupt occurs, the program counter is pushed onto the stack, and the corresponding interrupt vector address is loaded into the program counter. When the interrupt service routine is complete, the program counter is popped off the stack by a RETI instruction. This allows program execution to resume from where it was interrupted. The interrupt vector addresses are shown in Table 87.
Table 87. Interrupt Vector Addresses
Source IE0 TF0 IE1 TF1 RI + TI TF2 + EXF2 ITEMP (Temperature ADC) ISPI/I2CI IPSM (Power Supply) IADE (Energy Measurement DSP) IRTC (RTC Interval Timer) WDT (Watchdog Timer) RI2 + TI2 Vector Address 0x0003 0x000B 0x0013 0x001B 0x0023 0x002B 0x0033 0x003B 0x0043 0x004B 0x0053 0x005B 0x0063
The shortest interrupt latency is 3.25 instruction cycles, 800 ns with a clock of 4.096 MHz. The longest interrupt latency for a high priority interrupt results when a pending interrupt is generated during a low priority interrupt RETI, followed by a multiply instruction. This results in a maximum interrupt latency of 16.25 instruction cycles, 4 s with a clock of 4.096 MHz.
CONTEXT SAVING
When the 8052 vectors to an interrupt, only the program counter is saved on the stack. Therefore, the interrupt service routine must be written to ensure that registers used in the main program are restored to their pre-interrupt state. Common SFRs that can be modified in the ISR are the accumulator register and the PSW register. Any general-purpose registers that are used as scratch pads in the ISR should also be restored before exiting the interrupt. The following example 8052 code shows how to restore some commonly used registers:
GeneralISR: ; save the current accumulator value PUSH ACC ; save the current status and register bank selection PUSH PSW
INTERRUPT LATENCY
The 8052 architecture requires that at least one instruction execute between interrupts. To ensure this, the 8052 MCU core hardware prevents the program counter from jumping to an interrupt service routine (ISR) immediately after completing a RETI instruction or an access of the IP and IE SFRs.
; service interrupt ... ; restore the status and register bank selection POP POP RETI PSW ACC ; restore the accumulator
Rev. B | Page 96 of 156
ADE5166/ADE5169/ADE5566/ADE5569 WATCHDOG TIMER
The watchdog timer generates a device reset or interrupt within a reasonable amount of time if the ADE5166/ADE5169/ADE5566/ ADE5569 enter an erroneous state, possibly due to a programming error or electrical noise. The watchdog is enabled, by default, with a timeout of 2 sec and creates a system reset if not cleared within 2 sec. The watchdog function can be disabled by clearing the watchdog enable bit (WDE, Bit 1) in the watchdog timer SFR (WDCON, Address 0xC0). The watchdog circuit generates a system reset or interrupt (WDS, Bit 2) if the user program fails to set the WDE bit within a predetermined amount of time (set by the PRE bits, Bits[7:4]). The watchdog timer is clocked from the 32.768 kHz external crystal connected between the XTAL1 and XTAL2 pins.
Table 88. Watchdog Timer SFR (WDCON, Address 0xC0)
Bit [7:4] Address 0xC7 to 0xC4 Mnemonic PRE Default 7 Description Watchdog prescaler. In normal mode, the 16-bit watchdog timer is clocked by the input clock (32.768 kHz). The PRE bits determine which of the upper bits of the counter are used as the watchdog output, as follows:
tWATCHDOG = 2PRE x 29 XTAL1
The WDCON SFR can be written to by user software only if the double write sequence described in Table 88 is initiated on every write access to the WDCON SFR. To prevent any code from inadvertently disabling the watchdog, a watchdog protection can be activated. This watchdog protection locks in the watchdog enable and event settings so they cannot be changed by user code. The protection is activated by clearing a watchdog protection bit in the flash memory. The watchdog protection bit is the most significant bit at Address 0xF7FF of the flash memory. When this bit is cleared, the WDIR bit (Bit 3) is forced to 0, and the WDE bit is forced to 1. Note that the sequence for configuring the flash protection bits must be followed to modify the watchdog protection bit at Address 0xF7FF (see the Protecting the Flash Memory section).
3
0xC3
WDIR
0
2
0xC2
WDS
0
PRE Result (Watchdog Timeout) 0000 15.6 ms 0001 31.2 ms 0010 62.5 ms 0011 125 ms 0100 250 ms 0101 500 ms 0110 1 sec 0111 2 sec 1000 0 sec, automatic reset 1001 0 sec, serial download reset 1010 to 1111 Not a valid selection Watchdog interrupt response bit. When cleared, the watchdog generates a system reset when the watchdog timeout period has expired. When set, the watchdog generates an interrupt when the watchdog timeout period has expired. Watchdog status bit. This bit is set to indicate that a watchdog timeout has occurred. It is cleared by writing a 0 or by an external hardware reset. A watchdog reset does not clear WDS; therefore, it can be used to distinguish between a watchdog reset and a hardware reset from the RESET pin. Watchdog enable bit. When set, this bit enables the watchdog and clears its counter. The watchdog counter is subsequently cleared again whenever WDE is set. If the watchdog is not cleared within its selected timeout period, it generates a system reset or watchdog interrupt, depending on the WDIR bit. Watchdog write enable bit (see the Writing to the Watchdog Timer SFR (WDCON, Address 0XC0) section).
1
0xC1
WDE
1
0
0xC0
WDWR
0
Rev. B | Page 97 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 89. Watchdog and Flash Protection Byte in Flash (Flash Address = 0xF7FF)
Bit 7 Mnemonic WDPROT_PROTKY7 Default 1 Description This bit holds the protection for the watchdog timer and the seventh bit of the flash protection key. When this bit is cleared, the watchdog enable and event bits, WDE and WDIR, cannot be changed by user code. The watchdog configuration is then fixed to WDIR = 0 and WDE = 1. The watchdog timeout set using the PRE bits (Bits[7:4]) can still be modified by user code. The value of this bit is also used to set the flash protection key. If this bit is cleared to protect the watchdog, then the default value for the flash protection key is 0x7F instead of 0xFF (see the Protecting the Flash Memory section for more information on how to clear this bit). These bits hold the flash protection key. The contents of this flash address are compared to the flash protection key SFR (PROTKY, Address 0xBB) when the protection is being set or changed. If the two values match, the new protection is written to the Flash Address 0x3FFF to Flash Address 0x3FFB. See the Protecting the Flash Memory section for more information on how to configure these bits.
[6:0]
PROTKY
0xFF
WRITING TO THE WATCHDOG TIMER SFR (WDCON, ADDRESS 0xC0)
Writing data to the WDCON SFR involves a double instruction sequence. The WDWR bit (Bit 0) must be set, and the following instruction must be a write instruction to the WDCON SFR.
; Disable Watchdog CLR EA SETB WDWR CLR WDE SETB EA
WATCHDOG TIMER INTERRUPT
If the watchdog timer is not cleared within the watchdog timeout period, a system reset occurs unless the watchdog timer interrupt is enabled. The watchdog timer interrupt response bit (WDIR, Bit 3) is located in the watchdog timer SFR (WDCON, Address 0xC0). Enabling the WDIR bit allows the program to examine the stack or other variables that may have led the program to execute inappropriate code. The watchdog timer interrupt also allows the watchdog to be used as a long interval timer. Note that WDIR is automatically configured as a high priority interrupt. This interrupt cannot be disabled by the EA bit (Bit 7) in the interrupt enable SFR (IE, Address 0xA8; see Table 81). Even if all the other interrupts are disabled, the watchdog is kept active to watch over the program.
This sequence is necessary to protect the WDCON SFR from code execution upsets that may unintentionally modify this SFR. Interrupts should be disabled during this operation due to the consecutive instruction cycles.
Rev. B | Page 98 of 156
ADE5166/ADE5169/ADE5566/ADE5569 LCD DRIVER
Using shared pins, the LCD module is capable of directly driving an LCD panel of 17 x 4 segments without compromising any ADE5166/ADE5169/ADE5566/ADE5569 functions. It is capable of driving LCDs with 2x, 3x, and 4x multiplexing. The LCD waveform voltages generated through internal charge pump circuitry support up to 5 V LCDs. An external resistor ladder for LCD waveform voltage generation is also supported. Each ADE5166/ADE5169/ADE5566/ADE5569 has an embedded LCD control circuit, driver, and power supply circuit. The LCD module is functional in all operating modes (see the Operating Modes section) and can store up to four different screens in memory for scrolling purposes.
LCD REGISTERS
There are eight LCD control registers that configure the driver for the specific type of LCD in the end system and set up the user display preferences. The LCD configuration SFR (LCDCON, Address 0x95), LCD Configuration X SFR (LCDCONX, Address 0x9C), and LCD Configuration Y SFR (LCDCONY, Address 0xB1) contain general LCD driver configuration information including the LCD enable and reset, as well as the method of LCD voltage generation and multiplex level. The LCD clock SFR (LCDCLK, Address 0x96) configures timing settings for LCD frame rate and blink rate. LCD pins are configured for LCD functionality in the LCD segment enable SFR (LCDSEGE, Address 0x97) and the LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED).
Table 90. LCD Driver SFRs
SFR Address 0x95 0x96 0x97 0x9C 0xAC 0xAE 0xB1 0xED R/W R/W R/W R/W R/W R/W R/W R/W R/W Mnemonic LCDCON LCDCLK LCDSEGE LCDCONX LCDPTR LCDDAT LCDCONY LCDSEGE2 Description LCD configuration (see Table 91). LCD clock (see Table 95). LCD segment enable (see Table 98). LCD Configuration X (see Table 92). LCD pointer (see Table 99). LCD data (see Table 100). LCD Configuration Y (see Table 94). LCD Segment Enable 2 (see Table 101).
Table 91. LCD Configuration SFR (LCDCON, Address 0x95)
Bit 7 6 5 4 Mnemonic LCDEN LCDRST BLINKEN LCDPSM2 Default 0 0 0 0 Description LCD enable. If this bit is set, the LCD driver is enabled. LCD data registers reset. If this bit is set, the LCD data registers are reset to 0. Blink mode enable bit. If this bit is set, blink mode is enabled. The blink mode is configured by BLKMOD (Bits[7:6]) and BLKFREQ (Bits[5:4]) in the LCD clock SFR (LCDCLK, Address 0x96). Forces LCD off when in PSM2 (sleep) mode. Note that the internal voltage reference must be enabled by setting REF_BAT_EN (Bit 3) in the peripheral configuration SFR (PERIPH, Address 0xF4) to allow LCD operation in PSM2. LCDPSM2 Result 0 The LCD is disabled or enabled in PSM2 by LCDEN (Bit 7) 1 The LCD is disabled in PSM2 regardless of LCDEN setting LCD clock selection. CLKSEL Result 0 fLCDCLK = 2048 Hz 1 fLCDCLK = 128 Hz Bias mode. BIAS Result 0 1/2 1 1/3 LCD multiplex level. LMUX Result 00 Reserved 01 2x multiplexing; COM3/FP27 is used as FP27, and COM2/FP28 is used as FP28 10 3x multiplexing; COM3/FP27 is used as FP27, and COM2/FP28 is used as COM2 11 4x multiplexing; COM3/FP27 is used as COM3, and COM2/FP28 is used as COM2
Rev. B | Page 99 of 156
3
CLKSEL
0
2
BIAS
0
[1:0]
LMUX
01
ADE5166/ADE5169/ADE5566/ADE5569
Table 92. LCD Configuration X SFR (LCDCONX, Address 0x9C)
Bit 7 6 Mnemonic Reserved EXTRES Default 0 0 Description Reserved. External resistor ladder selection bit. EXTRES Result 0 External resistor ladder is disabled. Charge pump is enabled 1 External resistor ladder is enabled. Charge pump is disabled Bias level selection bits (see Table 93).
[5:0]
BIASLVL
0
Table 93. LCD Bias Voltage When Contrast Control Is Enabled
BIASLVL[5] 0 1 VA (V) VB VB = VA VB = VA 1/2 Bias VC VC = 2 x VA VC = 2 x VA VB VB = 2 x VA VB = 2 x VA 1/3 Bias VC VC = 3 x VA VC = 3 x VA
VREF x
BIASLVL[4:0 ] 31
BIASLVL[4:0 ] VREF x 1+ 31
Table 94. LCD Configuration Y SFR (LCDCONY, Address 0xB1)
Bit 7 Mnemonic AUTOSCREENSCROLL Default 0 Description When set, the four screens scroll automatically. The scrolling item is selected by the BLKFREQ bits in the LCD clock SFR (LCDCLK, Address 0x96[5:4]). If both BLINKEN in the LCD configuration SFR (LCDCON, Address 0x95[5]) and AUTOSCREENSCROLL are set, this bit preempts the blinking mode. Frame inversion mode enable bit. If this bit is set, frames are inverted every other frame. If this bit is cleared, frames are not inverted. These bits should be kept cleared to 0 for proper operation. These bits select the screen that is being output on the LCD pins. Values of 0, 1, 2, and 3 select Screen 0, Screen 1, Screen 2, and Screen 3, respectively. Update finished flag bit. This bit is updated by the LCD driver. When set, this bit indicates that the LCD memory has been updated and a new frame has begun. Refresh LCD data memory bit. This bit should be set by the user. When set, the LCD driver does not use the data in the LCD data registers to update the display. The LCD data registers can be updated by the 8052. When cleared, the LCD driver uses the data in the LCD data registers to update the display at the next frame.
6 [5:4] [3:2] 1 0
INV_LVL Reserved SCREEN_SEL UPDATEOVER REFRESH
0 00 00 0 0
Table 95. LCD Clock SFR (LCDCLK, Address 0x96)
Bit [7:6] Mnemonic BLKMOD Default 00 Description Blink mode clock source configuration bits. BLKMOD Result 00 The blink rate is controlled by software; the display is off 01 The blink rate is controlled by software; the display is on 10 The blink rate is 2 Hz 11 The blink rate is set by the BLKFREQ bits Blink rate configuration bits. These bits control the LCD blink rate if BLKMOD (Bits[7:6]) = 11. BLKFREQ Result (Blink Rate) 00 1 Hz 01 1/2 Hz 10 1/3 Hz 11 1/4 Hz LCD frame rate selection bits (see Table 96 and Table 97).
[5:4]
BLKFREQ
00
[3:0]
FD
0000
Rev. B | Page 100 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 96. LCD Frame Rate Selection for fLCDCLK = 2048 Hz (LCDCON[3] = 0)
FD3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
1
FD2 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
FD1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
FD0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
2x Multiplexing fLCD (Hz) Frame Rate (Hz) 256 128 1 170.7 85.3 128 64 102.4 51.2 85.3 42.7 73.1 36.6 64 32 56.9 28.5 51.2 25.6 46.5 23.25 42.7 21.35 39.4 19.7 36.6 18.3 34.1 17.05 32 16 16 8
3x Multiplexing fLCD (Hz) Frame Rate (Hz) 341.3 170.71 341.3 113.81 256 85.3 204.8 68.3 170.7 56.9 146.3 48.8 128 42.7 113.8 37.9 102.4 34.1 93.1 31 85.3 28.4 78.8 26.3 73.1 24.4 68.3 22.8 64 21.3 32 10.7
4x Multiplexing fLCD (Hz) Frame Rate (Hz) 512 1281 341.3 85.3 256 64 204.8 51.2 170.7 42.7 146.3 36.6 128 32 113.8 28.5 102.4 25.6 93.1 23.25 85.3 21.35 78.8 19.7 73.1 18.3 68.3 17.05 64 16 32 8
Not within the range of typical LCD frame rates.
Table 97. LCD Frame Rate Selection for fLCDCLK = 128 Hz (LCDCON[3] = 1)
FD3 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
1
FD2 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
FD1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
FD0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
2x Multiplexing fLCD (Hz) Frame Rate (Hz) 32 16 1 21.3 10.6 16 8 16 8 16 8 16 8 16 8 16 8 16 8 16 8 16 8 16 8 16 8 16 8 128 64 64 32
3x Multiplexing fLCD (Hz) Frame Rate (Hz) 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 32 10.7 128 42.7 64 21.3
4x Multiplexing fLCD (Hz) Frame Rate (Hz) 32 8 32 8 32 8 32 8 32 8 32 8 32 8 32 8 32 8 32 8 32 8 32 8 32 8 32 8 128 32 64 16
Not within the range of typical LCD frame rates.
Table 98. LCD Segment Enable SFR (LCDSEGE, Address 0x97)
Bit 7 6 5 4 3 2 [1:0] Mnemonic FP25EN FP24EN FP23EN FP22EN FP21EN FP20EN Reserved Default 0 0 0 0 0 0 0 Description FP25 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP24 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP23 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP22 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP21 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP20 function select bit. 0 = general-purpose I/O, 1 = LCD function. These bits must be kept at 0 for proper operation.
Rev. B | Page 101 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 99. LCD Pointer SFR (LCDPTR, Address 0xAC)
Bit 7 6 [5:4] [3:0] Mnemonic R/W Reserved RAM2SCREEN ADDRESS Default 0 0 0 0 Description Read or write LCD bit. If this bit is set to 1, the data in the LCD data SFR (LCDDAT, Address 0xAE) is written to the address indicated by the ADDRESS bits (LCDPTR[3:0]). Reserved. These bits select the screen recipient of the data memory action. LCD memory address (see Table 102).
Table 100. LCD Data SFR (LCDDAT, Address 0xAE)
Bit [7:0] Mnemonic LCDDATA Default 0 Description Data to be written into or read out of the LCD memory SFRs.
Table 101. LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED)
Bit [7:4] 3 2 1 0 Mnemonic Reserved FP19EN FP18EN FP17EN FP16EN Default 0 0 0 0 0 Description Reserved. FP19 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP18 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP17 function select bit. 0 = general-purpose I/O, 1 = LCD function. FP16 function select bit. 0 = general-purpose I/O, 1 = LCD function.
LCD SETUP
The LCD configuration SFR (LCDCON, Address 0x95) configures the LCD module to drive the type of LCD in the user end system. The BIAS bit (Bit 2) and the LMUX bits (Bits[1:0]) in this SFR should be set according to the LCD specifications. The COM2/FP28 and COM3/FP27 pins default to LCD segment lines. Selecting the 3x multiplex level in the LCD configuration SFR (LCDCON, Address 0x95) by setting LMUX[1:0] to 10 changes the FP28 pin functionality to COM2. The 4x multiplex level selection, LMUX[1:0] = 11, changes the FP28 pin functionality to COM2 and the FP27 pin functionality to COM3. The LCD segments of FP0 to FP15 are enabled by default. Additional pins are selected for LCD functionality in the LCD segment enable SFR (LCDSEGE, Address 0x97) and LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED), where there are individual enable bits for the FP16 to FP25 segment pins. The LCD pins do not need to be enabled sequentially. For example, if the Timer 2 input, which is the alternate function of FP23, is required, any of the other shared pins, FP16 to FP25 for the ADE5166/ADE5169 and FP16 to F26 for the ADE5566/ADE5569, can be enabled instead. The Display Element Control section contains details about setting up the LCD data memory to turn individual LCD segments on and off. Setting the LCDRST bit (Bit 6) in the LCD configuration SFR (LCDCON, Address 0x95) resets the LCD data memory to its default (0). A power-on reset also clears the LCD data memory.
LCD TIMING AND WAVEFORMS
An LCD segment acts like a capacitor that is charged and discharged at a certain rate. This rate, the refresh rate, determines the visual characteristics of the LCD. A slow refresh rate results in the LCD blinking on and off between refreshes. A fast refresh rate presents a screen that appears to be continuously lit. In addition, a faster refresh rate consumes more power. The frame rate, or refresh rate, for the LCD module is derived from the LCD clock, fLCDCLK. The LCD clock is selected as 2048 Hz or 128 Hz by the CLKSEL bit (Bit 3) in the LCD configuration SFR (LCDCON, Address 0x95). The minimum refresh rate needed for the LCD to appear solid (without blinking) is independent of the multiplex level. The LCD waveform frequency, fLCD, is the frequency at which the LCD switches the active common line. Thus, the LCD waveform frequency depends heavily on the multiplex level. The frame rate and LCD waveform frequency are set by fLCDCLK, the multiplex level, and the FD frame rate selection bits in the LCD clock SFR (LCDCLK, Address 0x96[3:0]). The LCD module provides 16 different frame rates for fLCDCLK = 2048 Hz, ranging from 8 Hz to 128 Hz for an LCD with 4x multiplexing. Fewer options are available with fLCDCLK = 128 Hz, ranging from 8 Hz to 32 Hz for a 4x multiplexed LCD. The 128 Hz clock is beneficial for battery operation because it consumes less power than the 2048 Hz clock. The frame rate is set by the FD bits in the LCD clock SFR (LCDCLK, Address 0x96[3:0]); see Table 96 and Table 97. The LCD waveform is inverted at twice the LCD waveform frequency, fLCD. This way, each frame has an average dc offset of 0. ADC offset degrades the lifetime and performance of the LCD.
Rev. B | Page 102 of 156
ADE5166/ADE5169/ADE5566/ADE5569
BLINK MODE
Blink mode is enabled by setting the BLINKEN bit (Bit 5) in the LCD configuration SFR (LCDCON, Address 0x95). This mode is used to alternate between the LCD on state and LCD off state so that the LCD screen appears to blink. There are two blink modes: a software controlled blink mode and an automatic blink mode.
Automatic Scrolling Mode
The ADE5166/ADE5169/ADE5566/ADE5569 provide automatic scrolling between the screens using the five available blink rates. Setting the AUTOSCREENSCROLL bit (Bit 7) in the LCD Configuration Y SFR (LCDCONY, Address 0xB1), as well as the BLINKEN bit (Bit 5) in the LCD configuration SFR (LCDCON, Address 0x95) enables this mode. To allow the scrolling frequency to be selected, the BLKMOD bits (Bits[7:6]) in the LCD clock SFR (LCDCLK, Address 0x96) should both be set to 1. The scrolling rates are then selected by the BLKFREQ bits (Bits[5:4]) in the LCD clock SFR (LCDCLK, Address 0x96); see Table 95. Automatic scrolling mode is available in all operating modes.
Software Controlled Blink Mode
The LCD blink rate can be controlled by user code by toggling the BLKMOD bits (Bits[7:6]) in the LCD clock SFR (LCDCLK, Address 0x96) to turn the display on and off at a rate that is determined by the MCU code.
Automatic Blink Mode
There are five blink rates. These blink rates are selected by the BLKMOD bits (Bits[7:6]) and the BLKFREQ bits (Bits[5:4]) in the LCD clock SFR (LCDCLK, Address 0x96); see Table 95.
DISPLAY ELEMENT CONTROL
Four banks of 15 bytes of data memory located in the LCD module control the on or off state of each segment of the LCD. The LCD data memory is stored in Address 0 through Address 14 in the LCD module, with two extra bits defining which one of the four screens is being addressed. Each byte configures the on and off states of two segment lines. The LSBs store the state of the even numbered segment lines, and the MSBs store the state of the odd numbered segment lines. For example, LCD Data Address 0 refers to segment Line 1 and Line 0 (see Table 102). Note that the LCD data memory is maintained in the PSM2 operating mode. The LCD data memory is accessed indirectly through the LCD pointer SFR (LCDPTR, Address 0xAC) and LCD data SFR (LCDDAT, Address 0xAE). Moving a value to the LCDPTR SFR selects the LCD screen and data byte to be accessed and initiates a read or write operation (see Table 99).
SCROLLING MODE
The ADE5166/ADE5169/ADE5566/ADE5569 can store up to four screens in memory. The LCD driver can use any of these screens by setting the SCREEN_SEL bits (Bits[3:2]) in the LCD Configuration Y SFR (LCDCONY, Address 0xB1) and clearing the refresh bit (Bit 0) in the same register. The software scrolling of the screens can then be achieved by a one-command instruction.
Table 102. LCD Data Memory Accessed Indirectly Through LCD Pointer SFR (LCDPTR, Address 0xAC) and LCD Data SFR (LCDDAT, Address 0xAE) 1, 2
LCD Memory Address 0x0E 0x0D 0x0C 0x0B 0x0A 0x09 0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01 0x00
1 2
LCD Pointer SFR (LCDPTR, Address 0xAC) COM3 COM2 COM1 COM0 FP27 FP25 FP23 FP21 FP19 FP17 FP15 FP13 FP11 FP9 FP7 FP5 FP3 FP1 FP27 FP25 FP23 FP21 FP19 FP17 FP15 FP13 FP11 FP9 FP7 FP5 FP3 FP1 FP27 FP25 FP23 FP21 FP19 FP17 FP15 FP13 FP11 FP9 FP7 FP5 FP3 FP1 FP27 FP25 FP23 FP21 FP19 FP17 FP15 FP13 FP11 FP9 FP7 FP5 FP3 FP1
COM3 FP28 N/A FP24 FP22 FP20 FP18 FP16 FP14 FP12 FP10 FP8 FP6 FP4 FP2 FP0
LCD Data SFR (LCDDAT, Address 0xAE) COM2 COM1 COM0 FP28 FP28 FP28 N/A N/A N/A FP24 FP24 FP24 FP22 FP22 FP22 FP20 FP20 FP20 FP18 FP18 FP18 FP16 FP16 FP16 FP14 FP14 FP14 FP12 FP12 FP12 FP10 FP10 FP10 FP8 FP8 FP8 FP6 FP6 FP6 FP4 FP4 FP4 FP2 FP2 FP2 FP0 FP0 FP0
COMx designates the common lines. FPx designates the segment lines.
Rev. B | Page 103 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Writing to LCD Data Registers
To update the LCD data memory, first set the LSB of the LCD Configuration Y SFR (LCDCONY, Address 0xB1) to freeze the data being displayed on the LCD while updating it. This operation ensures that the data displayed on the screen does not change while the data is being changed. Then, move the data to the LCD data SFR (LCDDAT, Address 0xAE) prior to accessing the LCD pointer SFR (LCDPTR, Address 0xAC). The address of the LCD screen should be consistent with the data changed. When the MSB of the LCD pointer SFR (LCDPTR, Address 0xAC) is set, the contents of the LCD data SFR (LCDDAT, Address 0xAE) are transferred to the internal LCD data memory designated by the address in the LCD pointer SFR (LCDPTR, Address 0xAC) and the screen designator. Clear the LSB of the LCD Configuration Y SFR (LCDCONY, Address 0xB1) when all of the data memory has been updated to allow the use of the new LCD setup for display. Sample 8052 code to update the segments attached to Pin FP10 and Pin FP11 on Screen 1 is as follows:
ORL MOV MOV ANL LCDCONY,#01h ;start updating the data LCDDAT,#FFh LCDPTR,#80h OR 05h LCDCONY,#0FEh ;update finished
Lifetime Performance Power Consumption
In most LCDs, a high amount of current is required when the LCD waveforms change state. The external resistor ladder option draws a constant amount of current, whereas the charge pump circuitry allows dynamic current consumption. If the LCD module is used with the internal charge pump option when the display is disabled, the voltage generation is disabled so that no power is consumed by the LCD function. This feature results in significant power savings if the display is turned off during battery operation.
Contrast Control
The electrical characteristics of the liquid in the LCD change over temperature. This requires adjustments in the LCD waveform voltages to ensure a readable display. An added benefit of the internal charge pump voltage generation is a configurable bias voltage that can be compensated over temperature and supply to maintain contrast on the LCD. These compensations can be performed based on the ADE5166/ADE5169/ADE5566/ ADE5569 temperature and supply voltage measurements (see the Temperature, Battery, and Supply Voltage Measurements section). This dynamic contrast control is not easily implemented with external resistor ladder voltage generation. The LCD bias voltage sets the contrast of the display when the charge pump provides the LCD waveform voltages. The ADE5166/ ADE5169/ADE5566/ADE5569 provide 64 bias levels selected by the BIASLVL bits (Bits[5:0]) in the LCD Configuration X SFR (LCDCONX, Address 0x9C). The voltage level on LCDVA, LCDVB, and LCDVC depends on the internal voltage reference value (VREF), BIASLVL selection, and the biasing selected, as described in Table 93.
Reading LCD Data Registers
When the MSB of the LCD pointer SFR (LCDPTR, Address 0xAC) is cleared, the contents of the LCD data memory of the corresponding screen designated by LCDPTR are transferred to the LCD data SFR (LCDDAT, Address 0xAE). Sample 8052 code to read the contents of LCD Data Memory Address 0x07 on Screen 1, which holds the on and off state of the segments attached to FP14 and FP15, is as follows:
MOV MOV LCDPTR,#07h R1, LCDDAT
Lifetime Performance
DC offset on a segment degrades its performance over time. The voltages generated through the internal charge pump switch faster than those generated by the external resistor ladder, reducing the likelihood of a dc voltage being applied to a segment and increasing the lifetime of the LCD.
VOLTAGE GENERATION
The ADE5166/ADE5169/ADE5566/ADE5569 provide two ways to generate the LCD waveform voltage levels. The on-chip charge pump option can generate 5 V. This makes it possible to use 5 V LCDs with the 3.3 V ADE5166/ADE5169/ADE5566/ADE5569. There is also an option to use an external resistor ladder with a 3.3 V LCD. The EXTRES bit (Bit 6) in the LCD Configuration X SFR (LCDCONX, Address 0x9C) selects the resistor ladder or charge pump option. When selecting how to generate the LCD waveform voltages, the following should be considered: * * Lifetime performance power consumption Contrast control
LCD EXTERNAL CIRCUITRY
The voltage generation selection is made by the EXTRES bit (Bit 6) in the LCD Configuration X SFR (LCDCONX, Address 0x9C). This bit is cleared by default for charge pump voltage generation, but it can be set to enable an external resistor ladder.
Rev. B | Page 104 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Charge Pump
Voltage generation through the charge pump requires external capacitors to store charge. The external connections to LCDVA, LCDVB, and LCDVC, as well as to LCDVP1 and LCDVP2, are shown in Figure 90.
LCDVC CHARGE PUMP AND LCD WAVEFORM CIRCUITRY LCDVB LCDVA LCDVP1 LCDVP2 100nF 470nF
07411-065
* * *
Type of LCD: 5 V, 4x multiplexed with 1/3 bias, 96 segments Voltage generation: internal charge pump Refresh rate: 64 Hz
470nF 470nF
Figure 90. External Circuitry for Charge Pump Option
External Resistor Ladder
Set the EXTRES bit (Bit 6) in the LCD Configuration X SFR (LCDCONX, Address 0x9C) to enable the external resistor ladder option. When EXTRES = 1, the LCD waveform voltages are supplied by the external resistor ladder. Because the LCD voltages are not generated on chip, the LCD bias compensation that is implemented to maintain contrast over temperature and supply is not possible. The external circuitry needed for the resistor ladder option is shown in Figure 91. The resistors required should be in the range of 10 k to 100 k and should be based on the current required by the LCD being used.
LCDVC LCD WAVEFORM CIRCUITRY LCDVB LCDVA
07411-066
A 96-segment LCD with 4x multiplexing requires 96/4 = 24 segment lines. Sixteen pins, FP0 to FP15, are automatically dedicated for use as LCD segments. Eight more pins must be chosen for the LCD function. Because the LCD has 4x multiplexing, all four common lines are used. As a result, COM2/FP28 and COM3/FP27 cannot be used as segment lines. Based on the alternate functions of the pins used for FP16 through FP25, FP16 to FP23 are chosen for the eight remaining segment lines. These pins are enabled for LCD functionality in the LCD segment enable SFR (LCDSEGE, Address 0x97) and the LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED). To determine the contrast setting for this 5 V LCD, see Table 93 for the BIASLVL bit settings in the LCD Configuration X SFR (LCDCONX, Address 0x9C) that correspond to a VC of 5 V in 1/3 bias mode. The maximum bias level setting for this LCD is BIASLVL = 101110. The LCD is set up with the following 8052 code:
; set up LCD pins to have LCD functionality MOV MOV LCDSEGE,#FP20EN+FP21EN+FP22EN+FP23EN LCDSEGE2,#FP16EN+FP17EN+FP18EN+FP19EN
; set up LCDCON for fLCDCLK = 2048Hz, 1/3 bias and 4x multiplexing MOV LCDCON,#BIAS+LMUX1+LMUX0 ; set up LCDCONX for charge pump and BIASLVL[110111] MOV LCDCONX,#BIASLVL5+BIASLVL4+BIASLVL3+BI ASLVL2+BIASLVL1+BIASLVL0 ; set up refresh rate for 64Hz with fLCDCLK = 2048 Hz MOV LCDCLK,#FD3+FD2+FD1+FD0 ; set up LCD data registers with data to be displayed using ; LCDPTR and LCDDAT registers ; turn all segments on FP27 ON ORL LCDCONY,#01h ; start data memory refresh MOV MOV LCDDAT,#F0H LCDPTR, #80h OR 0DH
LCDVP1 LCDVP2
Figure 91. External Circuitry for External Resistor Ladder Option
LCD FUNCTION IN PSM2 MODE
LCDPSM2 (Bit 4) and LCDEN (Bit 7) in the LCD configuration SFR (LCDCON, Address 0x95) control the LCD functionality in the PSM2 operating mode (see Table 103). Note that the internal voltage reference must be enabled by setting REF_BAT_EN (Bit 3) in the peripheral configuration SFR (PERIPH, Address 0xF4) to allow LCD operation in PSM2 mode (see Table 20).
Table 103. Bits Controlling LCD Functionality in PSM2 Mode
LCDPSM2 0 0 1 LCDEN 0 1 X Result The display is off in PSM2. The display is on in PSM2. The display is off in PSM2.
In addition, note that the LCD configuration and data memory are retained when the display is turned off.
ANL LCDCONY,#0FEh ; end of data memory refresh ORL LCDCON,#LCDEN ; enable LCD
Example LCD Setup
An example of how to set up the LCD peripheral for a specific LCD is described in this section with the following parameters:
To set up the same 3.3 V LCD for use with an external resistor ladder,
; setup LCDCONX for external resistor ladder MOV LCDCONX,#EXTRES
Rev. B | Page 105 of 156
ADE5166/ADE5169/ADE5566/ADE5569 FLASH MEMORY
FLASH MEMORY OVERVIEW
Flash memory is a type of nonvolatile memory that is in-circuit programmable. The default, erased state of a byte of flash memory is 0xFF. When a byte of flash memory is programmed, the required bits change from 1 to 0. The flash memory must be erased to turn the 0s back to 1s. A byte of flash memory cannot, however, be erased individually. The entire segment, or page, of flash memory that contains the byte must be erased. The ADE5166/ADE5169/ADE5566/ADE5569 provide 62 bytes of flash program/information memory. This memory is segmented into 124 pages that each contain 512 bytes. To reprogram one byte of flash memory, the other 511 bytes in that page must be erased. The flash memory can be erased by page or all at once in a mass erase. There is a command to verify that a flash write operation has completed successfully. The ADE5166/ADE5169/ ADE5566/ADE5569 flash memory controller also offers configurable flash memory protection. The 62 bytes of flash memory are provided on chip to facilitate code execution without any external discrete ROM device requirements. The program memory can be programmed in circuit, using the serial download mode provided or using conventional third-party memory programmers. Retention is the ability of the flash memory to retain its programmed data over time. Again, the parts have been qualified in accordance with the formal retention lifetime specification, JEDEC Standard 22 Method A117, at a specific junction temperature (TJ = 55C). As part of this qualification procedure, the flash memory is cycled to its specified endurance limit, as described previously, before data retention is characterized. This means that the flash memory is guaranteed to retain its data for its full specified retention lifetime every time the flash memory is reprogrammed. It should also be noted that retention lifetime, based on an activation energy of 0.6 eV, derates with TJ, as shown in Figure 92.
300
250
RETENTION (Years)
200
150
ANALOG DEVICES SPECIFICATION 100 YEARS MIN. AT TJ = 55C
100
50
50
The flash memory arrays on the ADE5166/ADE5169/ADE5566/ ADE5569 are fully qualified for two key Flash/EE memory characteristics: Flash/EE memory cycling endurance and Flash/EE memory data retention. Endurance quantifies the ability of the Flash/EE memory to be cycled through many program, read, and erase cycles. In real terms, a single endurance cycle is composed of four independent, sequential events, as follows: 1. 2. 3. 4. Initial page erase sequence Read/verify sequence Byte program sequence Second read/verify sequence
60 70 90 80 TJ JUNCTION TEMPERATURE (C)
100
110
Figure 92. Flash/EE Memory Data Retention
FLASH MEMORY ORGANIZATION
The ADE5166/ADE5169/ADE5566/ADE5569 contain a 64 kB array of Flash/EE program memory. The upper 2 kB contain permanently embedded firmware, allowing in-circuit serial download, serial debug, and nonintrusive single-pin emulation. The 2 kB of embedded firmware also contain essential coefficients that provide calibration to peripherals such as the ADCs and reference. The embedded firmware contained in the upper 2 kB of Flash/EE memory is not accessible by the user.
EMBEDDED DOWNLOAD/DEBUG KERNEL PERMANENTLY EMBEDDED FIRMWARE ALLOWS CODE TO BE DOWNLOADED TO ANY OF THE 62 kB OF ON-CHIP PROGRAM MEMORY. THE KERNEL PROGRAM APPEARS AS NOP INSTRUCTIONS TO USER CODE. 0xFFFF 2kB 0xF800
In reliability qualification, every byte in both the program and data Flash/EE memory is cycled from 0x00 to 0xFF until a first fail is recorded, signifying the endurance limit of the on-chip Flash/EE memory. As indicated in Table 4, the ADE5166/ADE5169/ADE5566/ ADE5569 flash memory endurance qualification has been carried out in accordance with JEDEC Standard 22 Method A117 over the industrial temperature range of -40C, +25C, +85C, and +125C. The results allow the specification of a minimum endurance figure over supply and temperature of 100,000 cycles, with a minimum endurance figure of 20,000 cycles of operation at 25C.
USER PROGRAM MEMORY 62 kB OF FLASH/EE PROGRAM MEMORY ARE AVAILABLE TO THE USER. ALL OF THIS SPACE CAN BE PROGRAMMED FROM THE PERMANENTLY EMBEDDED DOWNLOAD/DEBUG KERNEL OR IN PARALLEL PROGRAMMING MODE. 0xF7FF 62kB 0x0000
Figure 93. Flash Memory Organization
Rev. B | Page 106 of 156
07411-229
07411-067
Flash/EE Memory Reliability
0 40
ADE5166/ADE5169/ADE5566/ADE5569
The lower 62 bytes are available to the user for program storage or as nonvolatile data memory. They are segmented into 124 pages of 512 bytes each. It is up to the user to decide which flash memory pages are to be used for data memory. It is recommended that each page be dedicated solely to program or data memory so that an instance does not arise where the program counter is loaded with data memory instead of an opcode from the program memory or where program memory is erased to update a byte of data memory. The flash memory can be protected from read or write/erase access. The protection is implemented in the upper page of user program memory. The last sixteen bytes from this page are used to configure the write/erase protection for each of the pages. The four bytes that remain are used for configuring read protection of the flash memory. The read protection is selected in groups of four pages. Finally, there is a byte used to store the key required for modifying the protection scheme. If any code protection is required, the page of information memory must be write/erase protected at a minimum. Thus, it is recommended that if code protection is enabled, the last page of user accessible flash memory be used only to store data that does not need modification in the field. If the firmware requires protection and may need updating in the future, the last page should be reserved for constants used by the user code that do not require modification during emulation or debug. Page 0 through Page 122 are, therefore, available for general program and data memory use. It is recommended that Page 123 be used for constants or code that do not require future modifications. Note that the last 20 bytes of Page 123 are reserved for the flash memory protection and are, therefore, unavailable to the user.
USING THE FLASH MEMORY
The 62 bytes of flash memory are configured as 124 pages, each comprising 512 bytes. As with the other ADE5166/ADE5169/ ADE5566/ADE5569 peripherals, the interface to this memory space is via a group of registers mapped in the SFR space. The flash data SFR (EDATA, Address 0xBC), holds the byte of data to be accessed. The byte of flash memory is addressed via the flash high byte address SFR (EADRH, Address 0xC7) and the flash low byte address SFR (EADRL, Address 0xC6).
Table 104. Flash SFRs
SFR ECON FLSHKY PROTKY EDATA EADRL EADRH Address 0xB9 0xBA 0xBB 0xBC 0xC6 0xC7 Default 0x00 0xFF 0xFF 0x00 0x00 0x00 Bit Addressable No No No No No No Description Flash control Flash key Flash protection key Flash data Flash low byte address Flash high byte address
ECON is an 8-bit flash control SFR (Address 0xB9) that can be written to with one of five flash memory access commands to trigger various read, write, erase, and verify functions. Figure 94 demonstrates the steps required for access to the flash memory.
ECON COMMAND ADDRESS EADRH EADRL FLASH PROTECTION KEY FLSHKY ADDRESS DECODER PROTECTION DECODER ACCESS ALLOWED? TRUE: ACCESS ALLOWED ECON = 0
07411-069
FLSHKY = 0x3B?
FALSE: ACCESS DENIED ECON = 1
Figure 94. Flash Memory Read/Write/Erase Protection Block Diagram
Rev. B | Page 107 of 156
ADE5166/ADE5169/ADE5566/ADE5569
0xDFFF 0xDE00 0xDDFF 0xDC00 0xDBFF 0xDA00 0xD9FF 0xF7FF 0xF600 0xF5FF 0xF400 0xF3FF 0xF200 0xF1FF 0xF000 0xEFFF 0xEE00 0xEDFF 0xEC00 0xEBFF 0xEA00 0xE9FF 0xE800 0xE7FF 0xE600 0xE5FF 0xE400 0xE3FF 0xE200 0xE1FF 0xE000 PAGE 123 PAGE 122 PAGE 121 PAGE 120 PAGE 119 PAGE 118 PAGE 117 PAGE 116 PAGE 115 PAGE 114 PAGE 113 PAGE 112 READ PROTECT BIT 28 READ PROTECT BIT 30 0xD800 0xD7FF 0xD600 0xD5FF 0xD400 0xD3FF 0xD200 0xD1FF 0xD000 0xCFFF 0xCE00 0xCDFF READ 0xCC00 PROTECT 0xCBFF BIT 29 0xCA00 0xC9FF 0xC800 0xC7FF 0xC600 0xC5FF 0xC400 0xC3FF 0xC200 0xC1FF 0xC000 PAGE 111 PAGE 110 PAGE 109 PAGE 108 PAGE 107 PAGE 106 PAGE 105 PAGE 104 PAGE 103 PAGE 102 PAGE 101 PAGE 100 PAGE 99 PAGE 98 PAGE 97 PAGE 96 READ PROTECT BIT 24 READ PROTECT BIT 25 READ PROTECT BIT 26 READ PROTECT BIT 27 0xBFFF 0xBE00 0xBDFF 0xBC00 0xBBFF 0xBA00 0xB9FF 0xB800 0xB7FF 0xB600 0xB5FF 0xB400 0xB3FF 0xB200 0xB1FF 0xB000 0xAFFF 0xAE00 0xADFF 0xAC00 0xABFF 0xAA00 0xA9FF 0xA800 0xA7FF 0xA600 0xA5FF 0xA400 0xA3FF 0xA200 0xA1FF 0xA000 PAGE 95 PAGE 94 PAGE 93 PAGE 92 PAGE 91 PAGE 90 PAGE 89 PAGE 88 PAGE 87 PAGE 86 PAGE 85 PAGE 84 PAGE 83 PAGE 82 PAGE 81 PAGE 80 READ PROTECT BIT 20 READ PROTECT BIT 21 READ PROTECT BIT 22 READ PROTECT BIT 23 0x9FFF 0x9E00 0x9DFF 0x9C00 0x9BFF 0x9A00 0x99FF 0x9800 0x97FF 0x9600 0x95FF 0x9400 0x93FF 0x9200 0x91FF 0x9000 0x8FFF 0x8E00 0x8DFF 0x8C00 0x8BFF 0x8A00 0x89FF 0x8800 0x87FF 0x8600 0x85FF 0x8400 0x83FF 0x8200 0x81FF 0x8000 PAGE 79 PAGE 78 PAGE 77 PAGE 76 PAGE 75 PAGE 74 PAGE 73 PAGE 72 PAGE 71 PAGE 70 PAGE 69 PAGE 68 PAGE 67 PAGE 66 PAGE 65 PAGE 64 READ PROTECT BIT 16 READ PROTECT BIT 17 READ PROTECT BIT 18 READ PROTECT BIT 19
0x7FFF 0x7E00 0x7DFF 0x7C00 0x7BFF 0x7A00 0x79FF 0x7800 0x77FF 0x7600 0x75FF 0x7400 0x73FF 0x7200 0x71FF 0x7000 0x6FFF 0x6E00 0x6DFF 0x6C00 0x6BFF 0x6A00 0x69FF 0x6800 0x67FF 0x6600 0x65FF 0x6400 0x63FF 0x6200 0x61FF 0x6000 PAGE 63 PAGE 62 PAGE 61 PAGE 60 PAGE 59 PAGE 58 PAGE 57 PAGE 56 PAGE 55 PAGE 54 PAGE 53 PAGE 52 PAGE 51 PAGE 50 PAGE 49 PAGE 48 READ PROTECT BIT 12 READ PROTECT BIT 13 READ PROTECT BIT 14 READ PROTECT BIT 15
0x5FFF 0x5E00 0x5DFF 0x5C00 0x5BFF 0x5A00 0x59FF 0x5800 0x57FF 0x5600 0x55FF 0x5400 0x53FF 0x5200 0x51FF 0x5000 0x4FFF 0x4E00 0x4DFF 0x4C00 0x4BFF 0x4A00 0x49FF 0x4800 0x47FF 0x4600 0x45FF 0x4400 0x43FF 0x4200 0x41FF 0x4000
PAGE 47 PAGE 46 PAGE 45 PAGE 44 PAGE 43 PAGE 42 PAGE 41 PAGE 40 PAGE 39 PAGE 38 PAGE 37 PAGE 36 PAGE 35 PAGE 34 PAGE 33 PAGE 32 READ PROTECT BIT 8 READ PROTECT BIT 9 READ PROTECT BIT 10 READ PROTECT BIT 11
0x3FFF 0x3E00 0x3DFF 0x3C00 0x3BFF 0x3A00 0x39FF 0x3800 0x37FF 0x3600 0x35FF 0x3400 0x33FF 0x3200 0x31FF 0x3000 0x2FFF 0x2E00 0x2DFF 0x2C00 0x2BFF 0x2A00 0x29FF 0x2800 0x27FF 0x2600 0x25FF 0x2400 0x23FF 0x2200 0x21FF 0x2000 PAGE 31 PAGE 30 PAGE 29 PAGE 28 PAGE 27 PAGE 26 PAGE 25 PAGE 24 PAGE 23 PAGE 22 PAGE 21 PAGE 20 PAGE 19 PAGE 18 PAGE 17 PAGE 16 READ PROTECT BIT 4 READ PROTECT BIT 5 READ PROTECT BIT 6 READ PROTECT BIT 7
0x1FFF 0x1E00 0x1DFF 0x1C00 0x1BFF 0x1A00 0x19FF 0x1800 0x17FF 0x1600 0x15FF 0x1400 0x13FF 0x1200 0x11FF 0x1000 0x0FFF 0x0E00 0x0DFF 0x0C00 0x0BFF 0x0A00 0x09FF 0x0800 0x07FF 0x0600 0x05FF 0x0400 0x03FF 0x0200 0x01FF 0x0000
PAGE 15 PAGE 14 PAGE 13 PAGE 12 PAGE 11 PAGE 10 PAGE 9 PAGE 8 PAGE 7 PAGE 6 PAGE 5 PAGE 4 PAGE 3 PAGE 2 PAGE 1 PAGE 0 READ PROTECT BIT 0 READ PROTECT BIT 1 READ PROTECT BIT 2 READ PROTECT BIT 3
CONTAINS PROTECTION SETTINGS
Figure 95. Flash Memory Organization
Rev. B | Page 108 of 156
07411-068
ADE5166/ADE5169/ADE5566/ADE5569
ECON--Flash Control SFR
Programming the flash memory is done through the flash control SFR (ECON, Address 0xB9). This SFR allows the user to read, write, erase, or verify the 62 kB of flash memory. As a method of security, a key must be written to the flash key SFR (FLSHKY, Address 0xBA) to initiate any user access to the flash memory. Upon completion of the flash memory operation, the FLSHKY SFR is reset so that it must be written to before another flash memory operation. Requiring the key to be set before an access to the flash memory decreases the likelihood of user code or data being overwritten by a runaway program.
Table 105. Flash Control SFR (ECON, Address 0xB9)
Bit [7:0] Mnemonic ECON Default 0 Value 1 Description Write byte. The value in the EDATA SFR (Address 0xBC) is written to the flash memory, at the page address given by EADRH (Address 0xC7) and EADRL (Address 0xC6). Note that the byte being addressed must be pre-erased. Erase page. A 512-byte page of flash memory address is erased. The page is selected by the address in the EADRH and EADRL SFRs. Any address in the page can be written to EADRH and EADRL to select it for erasure. Erase all. All 62 kB of the available flash memory are erased. Note that this command is used during serial mode and parallel download mode but should not be executed by user code. Read byte. The byte in the flash memory, addressed by EADRH and EADRL, is read into EDATA. Reserved. Reserved. Reserved. Protect code (see the Protecting the Flash Memory section).
The program counter, PC, is held on the instruction where the ECON SFR is written to until the flash memory controller finishes the requested operation. Then the PC increments to continue with the next instruction. Any interrupt requests that occur while the flash controller is performing an operation are not handled until the flash operation is complete. All peripherals, such as timers and counters, continue to operate as configured throughout the flash memory access.
2
3 4 5 6 7 8
Table 106. Flash Key SFR (FLSHKY, Address 0xBA)
Bit [7:0] Mnemonic FLSHKY Default 0xFF Description The contents of this SFR are compared to the flash key, 0x3B. If the two values match, the next ECON SFR operation is allowed (see the Protecting the Flash Memory section).
Table 107. Flash Protection Key SFR (PROTKY, Address 0xBB)
Bit [7:0] Mnemonic PROTKY Default 0xFF Description The contents of this SFR are compared to the flash memory location at Address 0xF7EB. If the two values match, the update of the write/erase and read protection setup is allowed (see the Protecting the Flash Memory section). If the protection key in the flash is 0xFF, the PROTKY SFR value is not used for comparison. The PROTKY SFR is also used to write the protection key in the flash. This is done by writing the desired value in PROTKY and writing 0x08 in the ECON SFR. This operation can be done only once.
Table 108. Flash Data SFR (EDATA, Address 0xBC)
Bit [7:0] Mnemonic EDATA Default 0 Description Flash pointer data.
Table 109. Flash Low Byte Address SFR (EADRL, Address 0xC6)
Bit [7:0] Mnemonic EADRL Default 0 Description Flash pointer low byte address.
Table 110. Flash High Byte Address SFR (EADRH, Address 0xC7)
Bit [7:0] Mnemonic EADRH Default 0 Description Flash pointer high byte address.
Rev. B | Page 109 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Flash Functions
The following sample 8052 code is provided to demonstrate how to use the the flash functions. For these examples, Flash Memory Byte 0x3C00 is accessed. Write/erase protection is individually selectable for all 124 pages. Read protection is selected in groups of four pages (see Figure 95 for the groupings). The protection bits are stored in the last flash memory locations, Address 0xF7EB through Address 0xF7FF (see Figure 96). Sixteen bytes are reserved for write/erase protection, four bytes for read protection, and another byte to set the flash protection key (PROTKY, Address 0xBB). The user must enable write/erase protection for the last page, at a minimum, for the entire protection scheme to work. Note that the read protection does not prevent MOVC commands from being executed within the code. There is an additional layer of protection offered by a flash protection security key (PROTKY) that can be set up by the user so that the protection scheme cannot be changed without this key. After the protection key has been configured, it cannot be modified.
Write Byte
Write 0xF3 into Flash Memory Byte 0x3C00.
MOV EDATA, #F3h MOV EADRH, #3Ch MOV EADRL, #00h MOV FLSHKY, #3Bh key. MOV ECON, #01H ; Write flash security ; Write byte ; Data to be written ; Set up byte address
Erase Page
Erase the page containing Flash Memory Byte 0x3C00.
MOV EADRH, #3Ch byte address MOV EADRL, #00h MOV FLSHKY, #3Bh key. MOV ECON, #02H ; Write flash security ; Erase Page ; Select page through
Enabling Flash Protection by Code
The protection bytes in the flash can be programmed by using the flash controller command and programming the ECON SFR to 0x08. Issuing the ECON protection command initiates the programming of one byte of protection data. The EADRL (Address 0xC6) and EDATA (Address 0xBC) data pointer SFRs are used to store the least significant address and data bytes, respectively. Note that the EADRH data pointer SFR is not used in this command. The following sequence should be followed to enable the flash protection: 1. Set the EDATA flash data pointer with the write/erase or read protection data. When erased, the protection bits default to 1, like any other bit of flash memory. The default protection setting is for no protection. To enable protection, write a 0 to the bits corresponding to the pages that should be protected. Note that when setting the read protection, each protection bit protects four pages. Set the EADRL flash data pointer with the least significant byte of the protection address. For example, to access the protection on Page 112 through Page 119 (Address 0xF7FE), EADRL should be written to 0xFE. Enable access to the flash by writing 0x3B to the FLSHKY SFR (Address 0xBA). Issue the protection command by writing 0x08 to the ECON SFR (Address 0xB9).
Erase All
Erase all of the 62 kB flash memory.
MOV FLSHKY, #3Bh key. MOV ECON, #03H ; Write flash security ; Erase all
Read Byte
Read Flash Memory Byte 0x3C00.
MOV EADRH, #3Ch MOV EADRL, #00h MOV FLSHKY, #3Bh key. MOV ECON, #04H ; Write flash security ; Read byte ; Set up byte address
2.
; Data is ready in EDATA register
Note that the read byte command can be used to view the status of the protection bytes located in the upper 21 bytes, Page 123. The write byte command is not valid for this area.
3. 4.
PROTECTING THE FLASH MEMORY
Two forms of protection are offered for this flash memory: read protection and write/erase protection. The read protection ensures that any pages that are read protected cannot be read by the end user. The write protection ensures that the flash memory cannot be erased or written over. This protects the final product from tampering and can prevent the code from being overwritten in the event of a runaway program.
Step 1 to Step 3 should be repeated for each byte that requires protection. While configuring the final byte of write/read protection, the PROTKY SFR (Address 0xBB) can be enabled for a further level of code security. If enabled, the flash protection key is required to modify the protection scheme. To enable the flash protection key, the Flash Location 0xF7EB where the PROTKY is located should be written to using the flash control SFR (ECON, Address 0xB9). The PROTKY can be written to any 8-bit value; once configured, it cannot be modified. To enable the PROTKY and activate the flash protection, the part must be reset.
Rev. B | Page 110 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Note that after the PROTKY has been activated by a reset, any further changes to the protection require the new 8-bit protection key to be written to the PROTKY SFR prior to issuing the ECON command. The PROTKY SFR is cleared automatically when the ECON 0x08 command is issued and, therefore, the user must ensure that the correct value is written to the PROTKY SFR each time that the protection scheme is changed. The most significant bit of 0xF7FF is used to enable the lock mechanism for the watchdog (see the Watchdog Timer section for more information). The following code provides an example of how the write/erase protection can be enabled on the first page and the PROTKY set to 0xA3. Note that to activate the following protection, the part requires a reset.
; enable write/erase protection on the first page only MOV EDATA, #0FEH MOV EADRL, #0F0H MOV FLSHKY, #3BH ; clear bit WP 0 ; write address to F7F0h ; enable flash access MOV ECON, #08H command ;issue protection
;enable write/erase protection on last page (this is required for any protection to be activated) MOV EDATA, #0F7H MOV EADRL, #0FFH MOV FLSHKY, #3BH MOV ECON, #08H command MOV EDATA, #0A3H MOV EADRL, #0EBH MOV FLSHKY, #3BH MOV ECON, #08H command ; clear bit WP123 ; write address to F7FFh ; enable flash access ;issue protection
;set up PROTKY to A3h ; set PROTKY to A3h ; write address to F7EBh ; enable flash access ; issue protection
Note that after the PROTKY is changed to 0xA3, as shown in the preceding example code, all future modifications of the protection scheme require that the PROTKY SFR be set to 0xA3 prior to issuing the ECON protection command.
WP 123 WP 122 WP 114 WP 106 WP 121 WP 113 WP 105 WP 120 WP 112 WP 104
WDOG 0xF7FF LOCK WP 119 WP 111 WP 118 WP 110 WP 117 WP 109 WP 116 WP 108
WP 115 WP 107
WP 15 WP 7 0xF7EF RP 92-95 RP 60-63 RP 28-31 0xF7EB
WP 14 WP 6 RP RP 88-91 RP 56-59 RP 24-27
WP 13 WP 5 RP RP 84-87 RP 52-55 RP 20-23
WP 12 WP 4 RP RP 80-83 RP 48-51 RP 16-19
WP 11 WP 3 RP RP 76-79 RP 44-47 RP 12-15
WP 10 WP 2 RP RP 72-75 RP 40-43 RP 8-11
WP 9 WP 1 RP RP 68-71 RP 36-39 RP 4-7
WP 8 WP 0 RP 96-99 RP 64-67 RP 32-35 RP 0-3 PROTKY
120-123 116-119 112-115 108-111 104-107 100-103
PROTECTION KEY
0xF600
Figure 96. Flash Protection in Page 124
Rev. B | Page 111 of 156
07411-124
ADE5166/ADE5169/ADE5566/ADE5569
Enabling Flash Protection by Emulator Commands
Another way to set the flash protection bytes is to use the reserved emulator commands available only in download mode. These commands write directly to the SFRs and can be used to duplicate the operation described in the Enabling Flash Protection by Code section. When these flash bytes are written, the part can exit emulation mode by reset and the protections are effective. This method can be used in production and implemented after downloading the program. The commands used for this operation are an extension of the commands listed in Application Note uC004, Understanding the Serial Download Protocol, available at www.analog.com. * * Command with ASCII Code I or 0x49 writes the data into R0. Command with ASCII Code F or 0x46 writes R0 into the SFR address defined in the data of this command. When the last page is read protected, the protection bits can still be read by the user code. All other bits on this page are not available for reading. The protection scheme is intended to protect the end system. Protection should be disabled while developing and emulating code.
Flash Memory Timing
Typical program and erase times for the flash memory are shown in Table 111.
Table 111. Flash Memory Program and Erase Times
Command Write Byte Erase Page Erase All Read Byte Bytes Affected 1 byte 512 bytes 62 kB 1 byte Flash Memory Timing 30 s 20 ms 2.5 sec 100 ns
Omitting the protocol defined in the uC004 Application Note, the sequence to load protections is similar to the sequence mentioned in the Enabling Flash Protection by Code section, except that two emulator commands are necessary to replace one assembly command. For example, to write the protection value in the EADRH SFR (Address 0xC7), the following two commands must be executed: * * Command I with data = value of Protection Byte 0x3FFF Command F with data = 0xC7
Note that the core microcontroller operation is idled until the requested flash memory operation is complete. In practice, this means that even though the flash operation is typically initiated with a two-machine-cycle MOV instruction to write to the flash control SFR (ECON, Address 0xB9), the next instruction is not executed until the Flash/EE operation is complete. This means that the core cannot respond to interrupt requests until the Flash/ EE operation is complete, although the core peripheral functions such as counters/timers continue to count, as configured, throughout this period.
With this protocol, the protection can be written to the flash memory using the same sequence described in the Enabling Flash Protection by Code section. When the part is reset, the protection is effective.
IN-CIRCUIT PROGRAMMING
Serial Downloading
The ADE5166/ADE5169/ADE5566/ADE5569 facilitate code download via the standard UART serial port. The parts enter serial download mode after a reset or a power cycle if the SDEN pin is pulled low through an external 1 k resistor. Once in serial download mode, the hidden embedded download kernel executes. This allows the user to download code to the full 62 kB of flash memory while the device is in circuit in its target application hardware. Protection configured in the last page of the ADE5166/ADE5169/ ADE5566/ADE5569 affects whether flash memory can be accessed in serial download mode. Read protected pages cannot be read. Write/erase protected pages cannot be written or erased. The configuration bits cannot be programmed in serial download mode.
Notes on Flash Protection
The flash protection scheme is disabled by default so that none of the pages of the flash are protected from reading or writing/ erasing. The last page must be write-/erase-protected for the protection scheme to work. To activate the protection settings, the ADE5166/ADE5169/ ADE5566/ADE5569 must be reset after configuring the protection. After configuring protection on the last page and resetting the part, protections that have been enabled can be removed only by mass erasing the flash memory. The protection bits are never truly write protected. Protection bits can be program modified from a 1 to a 0, even after the last page has been protected. In this way, more protection can be added, but none can be removed.
Rev. B | Page 112 of 156
ADE5166/ADE5169/ADE5566/ADE5569 TIMERS
Each ADE5166/ADE5169/ADE5566/ADE5569 has three 16-bit timers/counters: Timer/Counter 0, Timer/Counter 1, and Timer/ Counter 2. The timer/counter hardware is included on chip to relieve the processor core of overhead inherent in implementing timer/counter functionality in software. Each timer/counter consists of two 8-bit registers: THx and TLx (x = 0, 1, or 2). All three timers can be configured to operate as timers or as event counters. When functioning as a timer, the TLx SFR is incremented every machine cycle. Thus, it can be thought of as counting machine cycles. Because a machine cycle on a single cycle core consists of one core clock period, the maximum count rate is the core clock frequency.
Table 112. Timer SFRs
SFR TCON TMOD TL0 TL1 TH0 TH1 T2CON RCAP2L RCAP2H TL2 TH2 Address 0x88 0x89 0x8A 0x8B 0x8C 0x8D 0xC8 0xCA 0xCB 0xCC 0xCD Bit Addressable Yes No No No No No Yes No No No No Description Timer/Counter 0 and Timer/Counter 1 control (see Table 114). Timer/Counter 0 and Timer/Counter 1 mode (see Table 113). Timer 0 low byte (see Table 117). Timer 1 low byte (see Table 119). Timer 0 high byte (see Table 116). Timer 1 high byte (see Table 118). Timer/Counter 2 control (see Table 115). Timer 2 reload/capture low byte (see Table 123). Timer 2 reload/capture high byte (see Table 122). Timer 2 low byte (see Table 121). Timer 2 high byte (see Table 120).
When functioning as a counter, the TLx SFR is incremented by a 1-to-0 transition at its corresponding external input pin: T0, T1, or T2. When the samples show a high in one cycle and a low in the next cycle, the count is incremented. Because it takes two machine cycles (two core clock periods) to recognize a 1-to-0 transition, the maximum count rate is half the core clock frequency. There are no restrictions on the duty cycle of the external input signal, but to ensure that a given level is sampled at least once before it changes, it must be held for a minimum of one full machine cycle. User configuration and control of all timer operating modes is achieved via the SFRs listed in Table 112.
TIMER REGISTERS
Table 113. Timer/Counter 0 and Timer/Counter 1 Mode SFR (TMOD, Address 0x89)
Bit 7 6 [5:4] Mnemonic Gate1 C/T1 T1/M1, T1/M0 Default 0 0 00 Description Timer 1 gating control. Set by software to enable Timer/Counter 1 only when the INT1 pin is high and the TR1 control bit (Address 0x88[6]) is set. Cleared by software to enable Timer 1 whenever the TR1 control bit is set. Timer 1 timer or counter select bit. Set by software to select counter operation (input from the T1 pin). Cleared by software to select the timer operation (input from the internal system clock). Timer 1 mode select bits. T1/M1, T1/M0 Result 00 TH1 (Address 0x8D) operates as an 8-bit timer/counter. TL1 (Address 0x8B) serves as a 5-bit prescaler. 01 16-bit timer/counter. TH1 and TL1 are cascaded; there is no prescaler. 10 8-bit autoreload timer/counter. TH1 holds a value to reload into TL1 each time TL1 overflows. 11 Timer/Counter 1 stopped. Timer 0 gating control. Set by software to enable Timer/Counter 0 only when the INT0 pin is high and the TR0 control bit (Address 0x88[4]) is set. Cleared by software to enable Timer 0 whenever the TR0 control bit is set. Timer 0 timer or counter select bit. Set by software to the select counter operation (input from the T0 pin). Cleared by software to select the timer operation (input from the internal system clock). Timer 0 mode select bits. T0/M1, T0/M0 Result 00 TH0 (Address 0x8C) operates as an 8-bit timer/counter. TL0 (Address 0x8A) serves as a 5-bit prescaler. 01 16-bit timer/counter. TH0 and TL0 are cascaded; there is no prescaler. 10 8-bit autoreload timer/counter. TH0 holds a value to reload into TL0 each time TL0 overflows. 11 TL0 is an 8-bit timer/counter controlled by the standard Timer 0 control bits. TH0 is an 8-bit timer only, controlled by the Timer 1 control bits.
Rev. B | Page 113 of 156
3 2 [1:0]
Gate0 C/T0 T0/M1, T0/M0
0 0 00
ADE5166/ADE5169/ADE5566/ADE5569
Table 114. Timer/Counter 0 and Timer/Counter 1 Control SFR (TCON, Address 0x88)
Bit 7 6 5 4 3 Bit Address 0x8F 0x8E 0x8D 0x8C 0x8B Mnemonic TF1 TR1 TF0 TR0 IE1 1 Default 0 0 0 0 0 Description Timer 1 overflow flag. Set by hardware on a Timer/Counter 1 overflow. Cleared by hardware when the program counter (PC) vectors to the interrupt service routine. Timer 1 run control bit. Set by the user to turn on Timer/Counter 1. Cleared by the user to turn off Timer/Counter 1. Timer 0 overflow flag. Set by hardware on a Timer/Counter 0 overflow. Cleared by hardware when the PC vectors to the interrupt service routine. Timer 0 run control bit. Set by the user to turn on Timer/Counter 0. Cleared by the user to turn off Timer/Counter 0. External Interrupt 1 (INT1) flag. Set by hardware by a falling edge or by a zero level applied to the external interrupt pin, INT1, depending on the state of Bit IT1. Cleared by hardware when the PC vectors to the interrupt service routine only if the interrupt was transition activated. If level activated, the external requesting source, rather than the on-chip hardware, controls the request flag. External Interrupt 1 (IE1) trigger type. Set by software to specify edge sensitive detection, that is, a 1-to-0 transition. Cleared by software to specify level sensitive detection, that is, zero level. External Interrupt 0 (INT0) flag. Set by hardware by a falling edge or by a zero level applied to the external interrupt pin, INT0, depending on the state of Bit IT0. Cleared by hardware when the PC vectors to the interrupt service routine only if the interrupt was transition activated. If level activated, the external requesting source, rather than the on-chip hardware, controls the request flag. External Interrupt 0 (IE0) trigger type. Set by software to specify edge sensitive detection, that is, a 1-to-0 transition. Cleared by software to specify level sensitive detection, that is, zero level.
2 1
0x8A 0x89
IT11 IE01
0 0
0
1
0x88
IT01
0
These bits are not used to control Timer/Counter 0 and Timer/Counter 1 but are, instead, used to control and monitor the external INT0 and INT1 interrupt pins.
Table 115. Timer/Counter 2 Control SFR (T2CON, Address 0xC8)
Bit 7 6 5 Bit Address 0xCF 0xCE 0xCD Mnemonic TF2 EXF2 RCLK Default 0 0 0 Description Timer 2 overflow flag. Set by hardware on a Timer 2 overflow. TF2 cannot be set when either RCLK = 1 or TCLK = 1. Cleared by user software. Timer 2 external flag. Set by hardware when either a capture or reload is caused by a negative transition on the T2EX pin and EXEN2 = 1. Cleared by user software. Receive clock enable bit. Set by the user to enable the serial port to use Timer 2 overflow pulses for its receive clock in Serial Port Mode 1 and Serial Port Mode 3. Cleared by the user to enable Timer 1 overflow to be used for the receive clock. Transmit clock enable bit. Set by the user to enable the serial port to use Timer 2 overflow pulses for its transmit clock in Serial Port Mode 1 and Serial Port Mode 3. Cleared by the user to enable Timer 1 overflow to be used for the transmit clock. Timer 2 external enable flag. Set by the user to enable a capture or reload to occur as a result of a negative transition on the T2EX pin if Timer 2 is not being used to clock the serial port. Cleared by the user for Timer 2 to ignore events at T2EX. Timer 2 start/stop control bit. Set by the user to start Timer 2. Cleared by the user to stop Timer 2. Timer 2 timer or counter function select bit. Set by the user to select the counter function (input from the external T2 pin). Cleared by the user to select the timer function (input from the on-chip core clock). Timer 2 capture/reload select bit. Set by the user to enable captures on negative transitions at the T2EX pin if EXEN2 = 1. Cleared by the user to enable autoreloads with Timer 2 overflows or negative transitions at the T2EX pin when EXEN2 = 1. When either RCLK = 1 or TCLK = 1, this bit is ignored and the timer is forced to autoreload on Timer 2 overflow.
4
0xCC
TCLK
0
3
0xCB
EXEN2
0
2 1
0xCA 0xC9
TR2 C/T2
0 0
0
0xC8
CAP2
0
Rev. B | Page 114 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 116. Timer 0 High Byte SFR (TH0, Address 0x8C)
Bit [7:0] Mnemonic TH0 Default 0 Description Timer 0 data high byte.
Mode 0 (13-Bit Timer/Counter)
Mode 0 configures an 8-bit timer/counter. Figure 97 shows Mode 0 operation. Note that the divide-by-12 prescaler is not present on the single cycle core.
fCORE
C/T0 = 0 TL0 TH0 (5 BITS) (8 BITS) INTERRUPT TF0
Table 117. Timer 0 Low Byte SFR (TL0, Address 0x8A)
Bit [7:0] Mnemonic TL0 Default 0 Description Timer 0 data low byte.
Table 118. Timer 1 High Byte SFR (TH1, Address 0x8D)
Bit [7:0] Mnemonic TH1 Default 0 Description Timer 1 data high byte.
P0.6/T0
C/T0 = 1
TR0
CONTROL
Bit [7:0]
Mnemonic TL1
Default 0
Description Timer 1 data low byte.
GATE INT0
Figure 97. Timer/Counter 0, Mode 0
Table 120. Timer 2 High Byte SFR (TH2, Address 0xCD)
Bit [7:0] Mnemonic TH2 Default 0 Description Timer 2 data high byte.
Table 121. Timer 2 Low Byte SFR (TL2, Address 0xCC)
Bit [7:0] Mnemonic TL2 Default 0 Description Timer 2 data low byte.
Table 122. Timer 2 Reload/Capture High Byte SFR (RCAP2H, Address 0xCB)
Bit [7:0] Mnemonic TH2 Default 0 Description Timer 2 reload/capture high byte.
Table 123. Timer 2 Reload/Capture Low Byte SFR (RCAP2L, Address 0xCA)
Bit [7:0] Mnemonic TL2 Default 0 Description Timer 2 reload/capture low byte.
In this mode, the timer register is configured as a 13-bit register. As the count rolls over from all 1s to all 0s, it sets the timer overflow flag, TF0 (Address 0x88[5]). TF0 can then be used to request an interrupt. The counter input is enabled when TR0 = 1 and either Gate0 = 0 or INT0 = 1. Setting Gate0 = 1 allows the timer to be controlled by the external input, INT0, to facilitate pulse width measurements. TR0 is a control bit located in the Timer/Counter 0 and Timer/Counter 1 control SFR (TCON, Address 0x88[4]); the Gate0/Gate1 bits are in Timer/Counter 0 and Timer/Counter 1 mode SFR (TMOD, Address 0x89, Bit 3 and Bit 7, respectively). The 13-bit register consists of all eight bits of the Timer 0 high byte SFR (TH0, Address 0x8C) and the lower five bits of the Timer 0 low byte SFR (TL0, Address 0x8A). The upper three bits of the TL0 SFR are indeterminate and should be ignored. Setting the run flag (TR0, Address 0x88[4]) does not clear the registers.
Mode 1 (16-Bit Timer/Counter)
Mode 1 is the same as Mode 0 except that the Mode 1 timer register runs with all 16 bits. Mode 1 is shown in Figure 98.
fCORE
C/T0 = 0 TL0 TH0 (8 BITS) (8 BITS) C/T0 = 1 P0.6/T0 TR0 CONTROL TF0 INTERRUPT
TIMER 0 AND TIMER 1
Timer 0 High/Low and Timer 1 High/Low Data Registers
Each timer consists of two 8-bit SFRs. For Timer 0, they are Timer 0 high byte (TH0, Address 0x8C) and Timer 0 low byte (TL0, Address 0x8A). For Timer 1, they are Timer 1 high byte (TH1, Address 0x8D) and Timer 1 low byte (TL1, Address 0x8B). These SFRs can be used as independent registers or combined into a single 16-bit register, depending on the timer mode configuration (see Table 116 to Table 119).
GATE INT0
This section describes the operating modes for Timer/Counter 0 and Timer/Counter 1. Unless otherwise noted, these modes of operation are the same for both Timer 0 and Timer 1.
Figure 98. Timer/Counter 0, Mode 1
Rev. B | Page 115 of 156
07411-072
Timer/Counter 0 and Timer/Counter 1 Operating Modes
07411-071
Table 119. Timer 1 Low Byte SFR (TL1, Address 0x8B)
ADE5166/ADE5169/ADE5566/ADE5569
Mode 2 (8-Bit Timer/Counter with Autoreload)
Mode 2 configures the timer SFR (TH0, Address 0x8C) as an 8-bit counter (TL0, Address 0x8A) with automatic reload, as shown in Figure 99. Overflow from TL0 not only sets TF0 (Address 0x88[5]) but also reloads TL0 with the contents of TH0, which is preset by software. The reload leaves TH0 unchanged.
fCORE
C/T0 = 0 TL0 (8 BITS) INTERRUPT
TIMER 2
Timer/Counter 2 Data Registers
Timer/Counter 2 also has two pairs of 8-bit data registers associated with it: Timer 2 high byte SFR (TH2, Address 0xCD), Timer 2 low byte SFR (TL2, Address 0xCC), Timer 2 reload/ capture high byte SFR (RCAP2H, Address 0xCB), and Timer 2 reload/capture low byte SFR (RCAP2L, Address 0xCA). These SFRs are used both as timer data registers and as timer capture/ reload registers (see Table 120 to Table 123).
TF0
C/T0 = 1 P0.6/T0 TR0 RELOAD TH0 (8 BITS) CONTROL
Timer/Counter 2 Operating Modes
The following sections describe the operating modes for Timer/ Counter 2. The operating modes are selected by bits in the Timer/ Counter 2 control SFR (T2CON, Address 0xC8), as shown in Table 115 and Table 124.
Table 124. T2CON Operating Modes
RCLK or TCLK 0 0 1 X CAP2 0 1 X X TR2 1 1 1 0 Mode 16-bit autoreload 16-bit capture Baud rate Off
GATE INT0
Figure 99. Timer/Counter 0, Mode 2
Mode 3 (Two 8-Bit Timer/Counters)
Mode 3 has different effects on Timer 0 and Timer 1. Timer 1 in Mode 3 simply holds its count. The effect is the same as setting TR1 = 0. Timer 0 in Mode 3 establishes TL0 and TH0 as two separate counters. This configuration is shown in Figure 100. TL0 uses the Timer 0 control bits, C/T0, Gate0 (see Table 113), TR0, TF0 (see Table 114), and the INT0 pin. TH0 is locked into a timer function (counting machine cycles) and takes over the use of TR1 and TF1 from Timer 1. Therefore, TH0 controls the Timer 1 interrupt. Mode 3 is provided for applications requiring an extra 8-bit timer or counter. When Timer 0 is in Mode 3, Timer 1 can be turned on and off by switching it out of and into its own Mode 3, or it can be used by the serial interface as a baud rate generator. In fact, Timer 1 can be used in any application not requiring an interrupt from Timer 1 itself.
fCORE
C/T0 = 0 TL0 (8 BITS) C/T0 = 1 TF0 CORE CLK/12 INTERRUPT
07411-073
16-Bit Autoreload Mode
The 16-bit autoreload mode has two options that are selected by EXEN2 (Bit 3) in the Timer/Counter 2 control SFR (T2CON, Address 0xC8). If EXEN2 = 0 when Timer 2 rolls over, it not only sets TF2 but also causes the Timer 2 SFRs to be reloaded with the 16-bit value in both the Timer 2 reload/capture high byte SFR (RCAP2H, Address 0xCB) and Timer 2 reload/capture low byte SFR (RCAP2L, Address 0xCA), which are preset by software. If EXEN2 = 1, Timer 2 performs the same events as when EXEN2 = 0 but adds a 1-to-0 transition at the external input pin, T2EX, which triggers the 16-bit reload and sets EXF2 (T2CON[6]). Autoreload mode is shown in Figure 101.
16-Bit Capture Mode
The 16-bit capture mode has two options that are selected by EXEN2 (Bit 3) in the Timer/Counter 2 control SFR (T2CON, Address 0xC8). If EXEN2 = 0, Timer 2 is a 16-bit timer or counter that, upon overflowing, sets the Timer 2 overflow bit (TF2, Bit 7). This bit can be used to generate an interrupt. If EXEN2 = 1, then Timer 2 performs the same events as when EXEN2 = 0, but it adds a l-to-0 transition on the T2EX external input, causing the current value in the Timer 2 SFRs, TL2 (Address 0xCC) and TH2 (Address 0xCD) to be captured into the RCAP2L (Address 0xCA) and RCAP2H (Address 0xCB) SFRs, respectively. In addition, the transition at T2EX causes the EXF2 bit (Bit 6) in the T2CON SFR (Address 0xC8) to be set, and EXF2, like TF2, can generate an interrupt. Capture mode is shown in Figure 102. The baud rate generator mode is selected by RCLK = 1 and/or TCLK = 1.
P0.6/T0
CONTROL TR0
GATE INT0
fCORE/12
TR1
TH0 (8 BITS)
INTERRUPT TF1
07411-074
Figure 100. Timer/Counter 0, Mode 3
Rev. B | Page 116 of 156
ADE5166/ADE5169/ADE5566/ADE5569
In either case, if Timer 2 is used to generate the baud rate, the TF2 interrupt flag does not occur. Therefore, Timer 2 interrupts do not occur and do not need to be disabled. In this mode, the EXF2 flag
fCORE
can, however, still cause interrupts that can be used as a third external interrupt. Baud rate generation is described as part of the UART serial port operation in the UART Serial Interface section.
C/ T2 = 0
TL2 (8 BITS)
P1.4/T2 C/ T2 = 1
TH2 (8 BITS)
CONTROL TR2 RELOAD TRANSITION DETECTOR RCAP2L RCAP2H TF2 TIMER INTERRUPT EXF2
P1.3/ T2EX
CONTROL EXEN2
07411-075
Figure 101. Timer/Counter 2, 16-Bit Autoreload Mode
fCORE
C/ T2 = 0 TL2 (8 BITS) TH2 (8 BITS) TF2
P1.4/T2
C/ T2 = 1
CONTROL TR2 CAPTURE
TRANSITION DETECTOR RCAP2L RCAP2H
TIMER INTERRUPT
P1.3/ T2EX CONTROL EXEN2
EXF2
Figure 102. Timer/Counter 2, 16-Bit Capture Mode
Rev. B | Page 117 of 156
07411-076
ADE5166/ADE5169/ADE5566/ADE5569 PLL
The ADE5166/ADE5169/ADE5566/ADE5569 are intended for use with a 32.768 kHz watch crystal. A PLL locks onto a multiple of this frequency to provide a stable 4.096 MHz clock for the system. The core can operate at this frequency or at binary submultiples of it to allow power savings when maximum core performance is not required. The default core clock is the PLL clock divided by 4, or 1.024 MHz. The ADE energy measurement clock is derived from the PLL clock and is maintained at 4.096 MHz/ 5 MHz (or 819.2 kHz) across all CD settings. The PLL is controlled by the CD bits in the power control SFR (POWCON, Address 0xC5[2:0]). To prevent erroneous changes to the POWCON SFR, a key is required to modify the register. First, the key SFR (KYREG, Address 0xC1) is written with the key, 0xA7, and then a new value is written to the POWCON SFR. If the PLL loses lock, the MCU is reset and PLL_FLT is set in the peripheral configuration SFR (PERIPH, Address 0xF4[4]). Set the PLLACK bit in the start ADC measurement SFR (ADCGO, Address 0xD8[7]) to acknowledge the PLL fault, clearing the PLL_FLT bit.
PLL REGISTERS
Table 125. Power Control SFR (POWCON, Address 0xC5)
Bit 7 6 5 4 3 [2:0] Mnemonic Reserved METER_OFF Reserved COREOFF Reserved CD Default 1 0 0 0 010 Description Reserved. Set this bit to 1 to turn off the modulators and energy metering DSP circuitry to reduce power if metering functions are not needed in PSM0. This bit should be kept at 0 for proper operation. Set this bit to 1 to shut down the core if in the PSM1 operating mode. Reserved. Controls the core clock frequency (fCORE). fCORE = 4.096 MHz/2CD. CD Result (fCORE in MHz) 000 4.096 001 2.048 010 1.024 011 0.512 100 0.256 101 0.128 110 0.064 111 0.032
Writing to the Power Control SFR (POWCON, Address 0xC5)
Note that writing data to the POWCON SFR involves writing 0xA7 into the key SFR (KYREG, Address 0xC1), followed by a write to the POWCON SFR.
Table 126. Key SFR (KYREG, Address 0xC1)
Bit [7:0] Mnemonic KYREG Default 0 Description Write 0xA7 to the KYREG SFR before writing to the POWCON SFR to unlock it. Write 0xEA to the KYREG SFR before writing to the INTPR, HTHSEC, SEC, MIN, or HOUR timekeeping registers to unlock them (see the RTC Registers section).
Rev. B | Page 118 of 156
ADE5166/ADE5169/ADE5566/ADE5569 REAL-TIME CLOCK (RTC)
The ADE5166/ADE5169/ADE5566/ADE5569 have an embedded RTC (see Figure 103). The external 32.768 kHz crystal is used as the clock source for the RTC. Calibration is provided to compensate the nominal crystal frequency and for variations in the external crystal frequency over temperature. By default, the RTC is active in all the power saving modes. The RTC counters retain their values through watchdog resets and external resets and are reset only during a power-on reset. The ADE5166/ADE5169/ADE5566/ADE5569 provide two ways to access the RTC data: by direct access through SFRs for configuration and by indirect access through address and data SFRs for the timekeeping registers and some other configurations. The address and data SFRs act as pointers to the RTC internal registers. The RTC registers can be written using the following 8052 assembly code:
MOV CALL ... UpdateRTC: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV RET KYREG, RTCKey RTCDAT, #30 RTCPTR, #82h KYREG, RTCKey RTCDAT, #05 RTCPTR, #83h KYREG, RTCKey RTCDAT, #04 RTCPTR, #84h RTCKey, #00h RTCKey, #0EAh UpdateRTC
ACCESS TO RTC SFRs
Access to the RTC SFRs is achieved by reading or writing to the SFR addresses that are detailed in the Access to Internal RTC Registers section. Writing to the indirect registers is protected by a key, as explained in the Writing to Internal RTC Registers section. Reading is not protected.
Reading Internal RTC Registers
When Bit 7 of the RTCPTR SFR is cleared, the contents of the internal RTC data register designated by the address in RTCPTR are transferred to the RTCDAT SFR. The RTC cannot be stopped to read the current time because stopping the RTC introduces an error in its timekeeping. Therefore, the RTC is read on-the-fly, and the counter registers must be checked for overflow. This can be accomplished using the following 8052 assembly code:
ReadAgain: MOV 0 MOV MOV MOV MOV MOV MOV MOV MOV MOV RTCPTR #01 R0, RTCDAT RTCPTR, #02 R1, RTCDAT RTCPTR, #03 R2, RTCDAT RTCPTR, #04 R3, RTCDAT RTCPTR, #01 A, RTCDAT ; 00h is R0 in ; Read HTHSEC ; Read HOUR ; Read MIN ; Read SEC ; Read HTHSEC using Bank
ACCESS TO INTERNAL RTC REGISTERS
Access to the internal RTC measurement registers is achieved by writing to the RTC pointer address SFR (RTCPTR, Address 0xA3). The RTCPTR register selects the RTC register to be accessed and determines if a read or a write is performed (see Table 130).
Writing to Internal RTC Registers
The RTC circuitry runs off a 32.768 kHz clock. The timekeeping registers, HTHSEC, SEC, MIN, HOUR, DAY, DATE, MONTH, and YEAR are updated with a 32.768 kHz clock. However, the TIMECON (Address 0xA1) and TIMECON2 (Address 0xA2) SFRs and the INTVAL register (Address 0x09) are updated with a 128 Hz clock. It takes up to two 128 Hz clock cycles from when the MCU writes to the TIMECON or TIMECON2 SFR, or the INTVAL register until it is successfully updated in the RTC. When the RTCW_RB bit in the RTCPTR SFR (Address 0xA3[7]) is set, the contents of the RTCDAT SFR (Address 0xA4) are transferred to the internal RTC register designated by the address in the RTCPTR SFR. To protect the RTC timekeeping registers from runaway code, a key must be written to the KYREG SFR (Address 0xC1) to obtain write access to any of the RTC indirect registers. The KYREG SFR should be set to 0xEA to unlock the timekeeping registers and is reset to 0 after a timekeeping register is written.
CJNE A, 00h, ReadAgain Bank 0
Rev. B | Page 119 of 156
ADE5166/ADE5169/ADE5566/ADE5569
TEMPERATURE ADC
(x)2
TEMPCAL
32.768kHz CRYSTAL
RTCCOMP
COMPENSATION
CALIBRATION
ITS1 ITS0 CALIBRATED 32.768kHz
8-BIT PRESCALER
HUNDREDTHS COUNTER HTHSEC ALSEC_EN EQUAL? ALMIN_EN EQUAL? ALHR_EN EQUAL? ALDAY_EN EQUAL? ALDAT_EN EQUAL? ALARM SECOND AL_SEC INTERVAL TIMEBASE SELECTION MUX
SECOND COUNTER SEC
ALARM MINUTE AL_MIN
MINUTE COUNTER MIN
ALARM HOUR AL_HOUR
HOUR COUNTER HOUR
ITEN
ALARM DAY AL_DAY
DAY COUNTER DAY 8-BIT INTERVAL COUNTER INTVAL MONTH COUNTER MONTH
ALARM DATE AL_DATE
DAY COUNTER DATE
EQUAL?
ALFLAG
RTC INTERRUPT
Figure 103. RTC Implementation
RTC SFRs
Table 127. List of RTC SFRs
SFR TIMECON TIMECON2 RTCPTR RTCDAT KYREG RTCCOMP TEMPCAL Address 0xA1 0xA2 0xA3 0xA4 0xC1 0xF6 0xF7 Bit Addressable No No No No No No No Description RTC configuration (see Table 128). RTC Configuration 2 (see Table 129). RTC pointer address (see Table 130). RTC pointer data (see Table 131). Key (see Table 126). RTC nominal compensation (see Table 132). RTC temperature compensation (see Table 133). This is a read only register.
Rev. B | Page 120 of 156
07411-123
YEAR COUNTER YEAR
ADE5166/ADE5169/ADE5566/ADE5569
Table 128. RTC Configuration SFR (TIMECON, Address 0xA1)
Bit 7 6 [5:4] Mnemonic Reserved ALFLAG ITS1, ITS0 Default N/A 0 0 Description Reserved. Alarm flag. This bit is set when the RTC registers match the enabled alarm registers. It can be cleared by the user to indicate that the alarm has been serviced. INTVAL timebase select bits. ITS1, ITS0 Timebase 00 1/128 sec 01 Second 10 Minute 11 Hour Interval timer one-time alarm. SIT Result 0 The ITFLAG flag is set after INTVAL counts, and then another interval count starts 1 The ITFLAG flag is set after one time interval Interval timer flag. This bit is set when the configured time interval has elapsed. It can be cleared by the user to indicate that the alarm event has been serviced. Interval timer enable. ITEN Result 0 The interval timer is disabled, and the 8-bit interval timer counter is reset 1 Set this bit to 1 to enable the interval timer Unused.
3
SIT
0
2 1
ITFLAG ITEN
0 0
0
Unused
N/A
Table 129. RTC Configuration 2 SFR (TIMECON2, Address 0xA2)
Bit [7:5] 4 Mnemonic Reserved ALDAT_EN Default N/A 0 Description Reserved. Alarm date enable. When this bit is set, the data in the AL_DATE register (Address 0x0E) is compared to the data in the RTC DATE register (Address 0x06). If the two values match, and any other enabled RTC alarms also match, the ALFLAG in the TIMECON SFR (Address 0xA1[6]) is set. If enabled, an RTC interrupt occurs. Alarm day enable. When this bit is set, the data in the AL_DAY register (Address 0x0D) is compared to the data in the RTC DAY register (Address 0x05). If the two values match and any other enabled RTC alarms also match, the ALFLAG in the TIMECON SFR (Address 0xA1[6]) is set. If enabled, an RTC interrupt occurs. Alarm hour enable. When this bit is set, the data in the AL_HOUR register (Address 0x0C) is compared to the data in the RTC HOUR register (Address 0x04). If the two values match and any other enabled RTC alarms also match, the ALFLAG in the TIMECON SFR (Address 0xA1[6]) is set. If enabled, an RTC interrupt occurs. Alarm minute enable. When set, the data in the AL_MIN register (Address 0x0B) is compared to the data in the RTC MIN register (Address 0x03). If the two values match and any other enabled RTC alarms also match, the ALFLAG in the TIMECON SFR (Address 0xA1[6]) is set. If enabled, an RTC interrupt occurs. Alarm second enable. When this bit is set, the data in the AL_SEC register (Address 0x0A) is compared to the data in the RTC SEC register (Address 0x02). If the two values match and any other enabled RTC alarms also match, the ALFLAG in the TIMECON SFR (Address 0xA1[6]) is set. If enabled, an RTC interrupt occurs.
3
ALDAY_EN
0
2
ALHR_EN
0
1
ALMIN_EN
0
0
ALSEC_EN
0
Rev. B | Page 121 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 130. RTC Pointer Address SFR (RTCPTR, Address 0xA3)
Bit 7 Mnemonic RTCW_RB Default 0 Description Read/write selection. RTCW_RB Result 0 The RTC register at RTC_ADDRESS (Bits[4:0]) is read into the RTCDAT SFR (Address 0xA4). 1 The data in the RTCDAT SFR is written in the RTC register at RTC_ADDRESS (Bits[4:0]). This operation is completed only if the KYREG SFR (Address 0xC1) is set to 0xEA, the instruction before writing to the RTCDAT SFR. Reserved. Target address for read/write operation.
[6:5] [4:0]
Reserved RTC_ADDRESS
N/A 0
Table 131. RTC Pointer Data SFR (RTCDAT, Address 0xA4)
Bit [7:0] Mnemonic RTC_DATA Default 0 Description Location of data for read/write RTC operation.
Table 132. RTC Nominal Compensation SFR (RTCCOMP, Address 0xF6)
Bit [7:0] Mnemonic RTCCOMP Default 0 Description Holds the nominal RTC compensation value at 25C. Note that this register is reset after a watchdog reset, an external reset, or a power-on reset (POR).
Table 133. RTC Temperature Compensation SFR (TEMPCAL, Address 0xF7)
Bit [7:0] Mnemonic TEMPCAL Default 0 Description Calibrates the RTC over temperature. This allows the external crystal shift to be compensated over temperature. Note that this register is reset after a watchdog reset, an external reset, or a power-on reset (POR).
Rev. B | Page 122 of 156
ADE5166/ADE5169/ADE5566/ADE5569
RTC REGISTERS
Table 134. RTC Register List
Address RTCPTR[4:0] 0x00 0x01 Mnemonic Reserved HTHSEC R/W N/A R/W Length N/A 8 Signed/ Unsigned N/A U Default Value N/A 0 Description Reserved. Counter. Updates every 1/128 second, referenced from the calibrated 32.768 kHz clock. It overflows from 127 to 00, incrementing the seconds counter, SEC. Counter. Updates every second, referenced from the calibrated 32.768 kHz clock. It overflows from 59 to 00, incrementing the minutes counter, MIN. Counter. Updates every minute, referenced from the calibrated 32.768 kHz clock. It overflows from 59 to 00, incrementing the hours counter, HOUR. Counter. Updates every hour, referenced from the calibrated 32.768 kHz clock. It overflows from 23 to 00, incrementing the DAY and DATE counters. Counter. Updates every day, referenced from the calibrated 32.768 kHz clock. It overflows from 6 to 0. Counter. Updates every day, referenced from the calibrated 32.768 kHz clock. It overflows from 28/29/30 or 31 to 01, depending on the month, incrementing the month counter, MONTH. Counter. Starts at 1 and updates every month, referenced from the calibrated 32.768 kHz clock. It overflows from 12 to 01, incrementing the year counter, YEAR. Counter. Updates every year, referenced from the calibrated 32.768 kHz clock. Interval timer. Counts according to the timebase established in the ITS bits of the RTC configuration SFR (TIMECON, Address 0xA1[5:4]). When the number of counts is equal to INTVAL, ITFLAG (TIMECON[2]) is set, and a pending RTC interrupt is created, if enabled. Note that the interval counter is eight bits, so it could count up to 255 sec, for example. Alarm second register. When this register matches the SEC register, and the ALSEC_EN bit (TIMECON2, Address 0xA2[0]) is set, ALFLAG (TIMECON[6]) is issued if all other enabled alarms match their corresponding timekeeping register. If enabled, a pending RTC interrupt is generated. Alarm minute register. When this register matches the MIN register and the ALMIN_EN bit (TIMECON2, Address 0xA2[1]) is set, ALFLAG (TIMECON[6]) is issued if all other enabled alarms match their corresponding timekeeping register. If enabled, a pending RTC interrupt is generated. Alarm hour register. When this register matches the HOUR register and the ALHR_EN bit (TIMECON2, Address 0xA2[2]) is set, ALFLAG (TIMECON[6]) is issued if all other enabled alarms match their corresponding timekeeping register. If enabled, a pending RTC interrupt is generated. Alarm day register. When this register matches the DAY register and the ALDAY_EN bit (TIMECON2, Address 0xA2[3]) is set, ALFLAG (TIMECON[6]) is issued if all other enabled alarms match their corresponding timekeeping registers. If enabled, a pending RTC interrupt is generated. Alarm date register. When this register matches the DATE register and the ALDAT_EN bit (TIMECON2, Address 0xA2[4]) is set, ALFLAG (TIMECON[6]) is issued if all other enabled alarms match their corresponding timekeeping registers. If enabled, a pending RTC interrupt is generated. Configuration of the RTC calibration output (see Table 135).
0x02
SEC
R/W
8
U
0
0x03
MIN
R/W
8
U
0
0x04
HOUR
R/W
8
U
0
0x05 0x06
DAY DATE
R/W R/W
8 8
U U
0 1
0x07
MONTH
R/W
8
U
1
0x08 0x09
YEAR INTVAL
R/W R/W
8 8
U U
0 0
0x0A
AL_SEC
R/W
8
U
0
0x0B
AL_MIN
R/W
8
U
0
0x0C
AL_HOUR
R/W
8
U
0
0x0D
AL_DAY
R/W
8
U
0
0x0E
AL_DATE
R/W
8
U
0
0x0F
RTC_CAL
R/W
8
U
0
Rev. B | Page 123 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 135. RTC Calibration Configuration Register (RTC_CAL, Address 0x0F)
Bit 7 6 Mnemonic CAL_EN_PSM2 CAL_EN Default 0 0 Description When this bit is set and the CAL_EN bit is set, the RTC output is present on P0.5/MISO/ZX in PSM2 mode. The RTC output is disabled on all other pins in PSM2 mode. RTC calibration enable output. CAL_EN Result 0 The RTC calibration output signal is disabled 1 The RTC calibration output signal is enabled and present on the pins selected by the RTC_P2P3, RTC_P1P2, RTC_P0P7, and RTC_P0P5 bits (Bits[3:0]). RTC calibration output frequency selection. FSEL Frequency Calibration Window 00 1 Hz 30.5 sec 01 512 Hz 30.5 sec 10 500 Hz 0.244 sec 11 16 kHz 0.244 sec When this bit is set and the CAL_EN bit is set, the RTC output is present on the P2.3/SDEN/TxD2 pin. When this bit is set and the CAL_EN bit is set, the RTC output is present on the P1.2/FP25/ZX pin. When this bit is set and the CAL_EN bit is set, the RTC output is present on the P0.7/SS/T1/RxD2 pin. When this bit is set and the CAL_EN bit is set, the RTC output is present on the P0.5/MISO/ZX pin.
[5:4]
FSEL[1:0]
00
3 2 1 0
RTC_P2P3 RTC_P1P2 RTC_P0P7 RTC_P0P5
0 0 0 0
RTC CALENDAR
The RTC has a full calendar, taking into account leap years. The rollover of the date to increment the month is implemented according to the parameters shown in Table 136.
Table 136. Month Rollover
MONTH Register 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C Rollover Value 31 28 or 29 days (see Table 137) 31 30 31 30 31 31 30 31 30 31 Estimated Month January February March April May June July August September October November December
Rev. B | Page 124 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 137. Leap Years--Rollover After 29 Days
YEAR Register 0d04 0d08 0d12 0d16 0d20 0d24 0d28 0d32 0d36 0d40 0d44 0d48 0d52 0d56 0d60 0d64 0d68 0d72 0d76 0d80 0d84 0d88 0d92 0d96 Estimated Year 2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048 2052 2056 2060 2064 2068 2072 2076 2080 2084 2088 2092 2096
Note that, if the ADE5166/ADE5169/ADE5566/ADE5569 are awakened by an RTC event, either the ALFLAG or ITFLAG, then the pending RTC interrupt, must be serviced before the devices can go back to sleep again. The ADE5166/ADE5169/ ADE5566/ADE5569 keep waking up until this interrupt has been serviced.
Interval Timer Alarm
The RTC can be used as an interval timer. When the interval timer is enabled by setting ITEN (TIMECON[1]), the interval timer clock source selected by the ITS1 and ITS0 bits (TIMECON[5:4]) is passed through to an 8-bit counter. This counter increments on every interval timer clock pulse until the 8-bit counter is equal to the value in the alarm interval register. Then an alarm event is generated, setting the ITFLAG bit (TIMECON[2]) and creating a pending RTC interrupt. If the SIT bit (TIMECON[3]) is cleared, the 8-bit counter is cleared and starts counting again. If the SIT bit is set, the 8-bit counter is held in reset after the alarm occurs. Take care when changing the interval timer timebase. The recommended procedure is as follows: 1. If the INTVAL register is to be modified, write to the INTVAL register first. Then wait for one 128 Hz clock cycle to synchronize with the RTC, 64,000 cycles at a 4.096 MHz instruction cycle clock. Disable the interval timer by clearing ITEN (TIMECON[1]). Then wait for one 128 Hz clock cycle to synchronize with the RTC, 64,000 cycles at a 4.096 MHz instruction cycle clock. Read the TIMECON SFR to ensure that the ITEN bit is cleared. If it is not, wait for another 128 Hz clock cycle. Set the timebase bits, ITS1 and ITS0 (TIMECON[5:4]) to configure the interval. Wait for a 128 Hz clock cycle for this change to take effect.
2.
RTC INTERRUPTS
The RTC alarm and interval timer interrupts are enabled by setting the ETI bit in the Interrupt Enable and Priority 2 SFR (IEIP2, Address 0xA9[2]). When an alarm or interval timer event occurs, the corresponding flag is set and a pending RTC interrupt is generated. If the RTC interrupt is enabled, the program vectors to the RTC interrupt address, and the corresponding RTC flag can be cleared in software. Moving to the RTC interrupt address alone does not automatically clear the flag. To successfully acknowledge the interrupt event, the flag must be cleared by software. If the RTC interrupt is disabled when the event occurs, the pending interrupt remains until the corresponding RTC flag is cleared. Therefore, the ALFLAG and ITFLAG flags (Bit 6 and Bit 2, respectively, in the RTC configuration SFR (TIMECON, Address 0xA1)) drive the RTC interrupt and should be managed by the user to keep track of the RTC events.
3. 4.
RTC Wake-Up Alarm
The RTC can be used with an alarm to wake up periodically. The alarm registers (AL_SEC, AL_MIN, AL_HOUR, AL_DAY, and AL_DATE) should be set to the specific time that the alarm event is required, and the corresponding ALxxx_EN bits must be set in the RTC Configuration 2 SFR (TIMECON2, Address 0xA2). The enabled alarm registers are then compared to their respective RTC registers (SEC, MIN, HOUR, DAY, and DATE). When all enabled alarms match their corresponding RTC registers, the alarm flag is set, and a pending interrupt is generated. If the alarm flag (ALFLAG, TIMECON[6]) is enabled, an RTC interrupt occurs and the program vectors to the RTC interrupt address.
Rev. B | Page 125 of 156
ADE5166/ADE5169/ADE5566/ADE5569
RTC CRYSTAL COMPENSATION
The RTC provides registers to compensate for the tolerance of the crystal frequency and its variation over temperature. Up to 248 ppm frequency error can be calibrated out by the RTC circuitry. The compensation is fully digital and implemented by adding or subtracting pulses from the crystal clock signal. The resolution of the RTC nominal compensation SFR (RTCCOMP, Address 0xF6) is 2 ppm/LSB, or 0.17 sec/day/LSB. The RTC compensation circuitry adds the RTC temperature compensation SFR (TEMPCAL, Address 0xF7) and the RTCCOMP SFR to determine how much compensation is required. The sum of these two registers is limited to 248 ppm, or 42.85 sec/day. faster than in the normal mode, resulting in timekeeping registers that represent seconds/125, minutes/125, and hours/125, instead of seconds, minutes, and hours. Therefore, this mode should be used for calibration only.
Table 138. RTC Calibration Options
Option Normal Mode 0 Normal Mode 1 Calibration Mode 0 Calibration Mode 1 FSEL Bits 00 01 10 11 Calibration Window (sec) 30.5 30.5 0.244 0.244 fRTCCAL (Hz) 1 512 500 16,000
RTC Calibration
The nominal crystal frequency can be calibrated by adjusting the RTCCOMP SFR so that the clock going into the RTC is precisely 32.768 kHz at 25C.
Calibration Flow
An RTC calibration pulse output is on up to four pins configured by the four LSBs in the RTC calibration configuration register (RTC_CAL, Address 0x0F). Enable the RTC output by setting the CAL_EN bit (RTC_CAL[6]). The RTC calibration is accurate to within 2 ppm over a 30.5 sec window in all operational modes: PSM0, PSM1, and PSM2. Two output frequencies are offered for the normal RTC mode: 1 Hz with the FSEL bits = 00 and 512 Hz with the FSEL bits = 01 (RTC_CAL[5:4]). A shorter window of 0.244 sec is offered for fast calibration during PSM0 or PSM1 mode. Two output frequencies are offered for this RTC calibration output mode: 500 Hz with the FSEL bits = 10 and 16 kHz with the FSEL bits = 11 (RTC_CAL[5:4]). Note that for the 0.244 sec calibration window, the RTC is clocked 125 times
When no RTC compensation is applied, with RTCCOMP and TEMPCAL equal to zero, the nominal compensation required to account for the error in the external crystal can be determined. In this case, it is not necessary to wait for an entire calibration window to determine the error in the pulse output. Calculating the error in frequency between two consecutive pulses on the RTC calibration pin is sufficient. The value to write to the RTCCOMP SFR is calculated from the % error or seconds per day error on the frequency output. Each bit of the RTCCOMP SFR represents 2 ppm of correction, where 1 sec/day error is equal to 11.57 ppm. RTCCOMP = 5000 x (% Error) RTCCOMP =
1 x (second/day Error) 2 x 11.57
During calibration, user software writes the current time to the RTC. Refer to the Access to Internal RTC Registers section for more information on how to read and write to the RTC timekeeping registers.
Rev. B | Page 126 of 156
ADE5166/ADE5169/ADE5566/ADE5569 UART SERIAL INTERFACE
The ADE5166/ADE5169/ADE5566/ADE5569 UART can be configured in one of four modes. * * * * Shift register with baud rate fixed at fCORE/12 8-bit UART with variable baud rate 9-bit UART with baud rate fixed at fCORE/64 or fCORE/32 9-bit UART with variable baud rate TxD (P1.1/TxD) pins, and the firmware interface is through the SFRs, as presented in Table 139. Both the serial port receive and transmit registers are accessed through the serial port buffer SFR (SBUF, Address 0x99). Writing to SBUF loads the transmit register, and reading SBUF accesses a physically separate receive register. An enhanced UART mode is offered by using the UART timer and by providing enhanced frame error, break error, and overwrite error detection. This mode is enabled by setting the EXTEN bit in the configuration SFR (CFG, Address 0xAF[6]) (see the UART Additional Features section). The enhanced serial baud rate control SFR (SBAUDT, Address 0x9E) and UART timer fractional divider SFR (SBAUDF, Address 0x9D) are used to configure the UART timer and to indicate the enhanced UART errors.
Variable baud rates are defined by using an internal timer to generate any rate between 300 bauds/sec and 115,200 bauds/sec. The UART serial interface provided in the ADE5166/ADE5169/ ADE5566/ADE5569 is a full-duplex serial interface. It is also receive buffered by storing the first received byte in a receive buffer until the reception of the second byte is complete. The physical interface to the UART is provided via the RxD (P1.0/RxD) and
UART SFRs
Table 139. Serial Port SFRs
SFR SCON SBUF SBAUDT SBAUDF Address 0x98 0x99 0x9E 0x9D Bit Addressable Yes No No No Description Serial communications control (see Table 140). Serial port buffer (see Table 141). Enhanced serial baud rate control (see Table 142). UART timer fractional divider (see Table 143).
Table 140. Serial Communications Control SFR (SCON, Address 0x98)
Bit [7:6] Bit Address 0x9F, 0x9E Mnemonic SM0, SM1 Default 00 Description UART serial mode select bits. These bits select the serial port operating mode. SM0, SM1 Result (Selected Operating Mode) 00 Mode 0, shift register, fixed baud rate (fCORE/12) 01 Mode 1, 8-bit UART, variable baud rate 10 Mode 2, 9-bit UART, fixed baud rate (fCORE/32) or (fCORE/16) 11 Mode 3, 9-bit UART, variable baud rate Multiprocessor communication enable bit. Enables multiprocessor communication in Mode 2 and Mode 3, and framing error detection in Mode 1. In Mode 0, SM2 should be cleared. In Mode 1, if SM2 is set, RI is not activated if a valid stop bit was not received. If SM2 is cleared, RI is set as soon as the byte of data is received. In Mode 2 or Mode 3, if SM2 is set, RI is not activated if the received ninth data bit in RB8 is 0. If SM2 is cleared, RI is set as soon as the byte of data is received. Serial port receive enable bit. Set by user software to enable serial port reception. Cleared by user software to disable serial port reception. Serial port transmit (Bit 9). The data loaded into TB8 is the ninth data bit transmitted in Mode 2 and Mode 3. Serial port receiver (Bit 9). The ninth data bit received in Mode 2 and Mode 3 is latched into RB8. For Mode 1, the stop bit is latched into RB8. Serial port transmit interrupt flag. Set by hardware at the end of the eighth bit in Mode 0 or at the beginning of the stop bit in Mode 1, Mode 2, and Mode 3. TI must be cleared by user software. Serial port receive interrupt flag. Set by hardware at the end of the eighth bit in Mode 0 or halfway through the stop bit in Mode 1, Mode 2, and Mode 3. RI must be cleared by user software.
5
0x9D
SM2
0
4 3 2 1
0x9C 0x9B 0x9A 0x99
REN TB8 RB8 TI
0 0 0 0
0
0x98
RI
0
Rev. B | Page 127 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 141. Serial Port Buffer SFR (SBUF, Address 0x99)
Bit [7:0] Mnemonic SBUF Default 0 Description Serial port data buffer.
Table 142. Enhanced Serial Baud Rate Control SFR (SBAUDT, Address 0x9E)
Bit 7 Mnemonic OWE Default 0 Description Overwrite error. This bit is set when new data is received and RI = 1 (Bit 0 in the SCON SFR, Address 0x98). It indicates that SBUF was not read before the next character was transferred in, causing the prior SBUF data to be lost. Write a 0 to this bit to clear it. Frame error. This bit is set when the received frame does not have a valid stop bit. This bit is read only and is updated every time a frame is received. Break error. This bit is set whenever the receive data line (Rx) is low for longer than a full transmission frame, which is the time required for a start bit, eight data bits, a parity bit, and half a stop bit. This bit is updated every time a frame is received. Extended divider ratio for baud rate setting, as shown in Table 144. Binary divider (see Table 144). DIV Result 000 Divide by 1 001 Divide by 2 010 Divide by 4 011 Divide by 8 100 Divide by 16 101 Divide by 32 110 Divide by 64 111 Divide by 128
6 5
FE BE
0 0
[4:3] [2:0]
SBTH DIV
00 000
Table 143. UART Timer Fractional Divider SFR (SBAUDF, Address 0x9D)
Bit 7 Mnemonic UARTBAUDEN Default 0 Description UART baud rate enable. Set to enable UART timer to generate the baud rate. When set, the SMOD bit (PCON, Address 0x87[7]), the TCLK bit (T2CON, Address 0xC8[4]), and the RCLK bit (T2CON, Address 0xC8[5]) are ignored. Cleared to let the baud rate be generated as per a standard 8052. Not implemented, write don't care. UART timer fractional divider.
6 [5:0]
Not implemented SBAUDF
0
Rev. B | Page 128 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 144. Common Baud Rates Using the UART Timer with a 4.096 MHz PLL Clock
Ideal Baud 115,200 115,200 57,600 57,600 38,400 38,400 38,400 19,200 19,200 19,200 19,200 9600 9600 9600 9600 9600 4800 4800 4800 4800 4800 4800 2400 2400 2400 2400 2400 2400 2400 300 300 300 300 300 300 300 300 CD 0 1 0 1 0 1 2 0 1 2 3 0 1 2 3 4 0 1 2 3 4 5 0 1 2 3 4 5 6 0 1 2 3 4 5 6 7 SBTH 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 DIV 1 0 2 1 2 1 0 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0 7 7 7 6 5 4 3 2 SBAUDT 0x01 0x00 0x02 0x01 0x02 0x01 0x00 0x03 0x02 0x01 0x00 0x04 0x03 0x02 0x01 0x00 0x05 0x04 0x03 0x02 0x01 0x00 0x06 0x05 0x04 0x03 0x02 0x01 0x00 0x17 0x0F 0x07 0x06 0x05 0x04 0x03 0x02 SBAUDF 0x87 0x87 0x87 0x87 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB 0xAB % Error +0.16 +0.16 +0.16 +0.16 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31
Rev. B | Page 129 of 156
ADE5166/ADE5169/ADE5566/ADE5569
UART OPERATION MODES
Mode 0 (Shift Register with Baud Rate Fixed at fCORE/12)
Mode 0 is selected when the SM0 and SM1 bits in the serial communications control SFR (SCON, Address 0x98[7:6]) are cleared. In this shift register mode, serial data enters and exits through the RxD pin. The TxD pin outputs the shift clock. The baud rate is fixed at fCORE/12. Eight data bits are transmitted or received. Transmission is initiated by any instruction that writes to the serial port buffer SFR (SBUF, Address 0x99). The data is shifted out of the Pin RxD line. The eight bits are transmitted with the least significant bit (LSB) first. Reception is initiated when the serial port receive enable bit, REN (SCON[4]), is 1, and the serial port receive interrupt bit, RI (SCON[0]), is 0. When RI is cleared, the data is clocked into the Pin RxD line, and the clock pulses are output from the Pin TxD line as shown in Figure 104.
RxD (DATA OUT) TxD (SHIFT CLOCK) DATA BIT 0 DATA BIT 1 DATA BIT 6 DATA BIT 7
07411-078
Reception is initiated when a 1-to-0 transition is detected on the RxD pin. Assuming that a valid start bit is detected, character reception continues. The eight data bits are clocked into the internal serial port shift register. All of the following conditions must be met at the time the final shift pulse is generated to receive a character: * If the extended UART is disabled (EXTEN = 0 in the CFG SFR, Address 0xAF[6]), RI (SCON[0]) must be 0 to receive a character. This ensures that the data in the SBUF SFR is not overwritten if the last received character has not been read. If frame error checking is enabled by setting SM2 (SCON[5]), the received stop bit must be set to receive a character. This ensures that every character received comes from a valid frame, with both a start bit and a stop bit.
*
If any of these conditions is not met, the received frame is irretrievably lost, and the receive interrupt flag (RI, SCON[0]) is not set. If the received frame meets these conditions, the following events occur: * * * The eight bits in the receive shift register are latched into the SBUF SFR. The ninth bit (stop bit) is clocked into RB8 (SCON[2]). The receiver interrupt flag (RI, SCON[0]) is set.
Figure 104. 8-Bit Shift Register Mode
Mode 1 (8-Bit UART with Variable Baud Rate)
Mode 1 is selected by clearing the SM0 bit (SCON[7]) and setting the SM1 bit (SCON[6]). Each data byte (LSB first) is preceded by a start bit (0) and followed by a stop bit (1). Therefore, each frame consists of 10 bits transmitted on the TxD pin or received on the RxD pin. The baud rate is set by a timer overflow rate. Timer 1 or Timer 2 can be used to generate baud rates, or both timers can be used simultaneously where one generates the transmit rate and the other generates the receive rate. There is also a dedicated timer for baud rate generation, the UART timer, which has a fractional divisor to precisely generate any baud rate (see the UART Timer Generated Baud Rates section). Transmission is initiated by a write to the serial port buffer SFR (SBUF, Address 0x99). Next, a stop bit (1) is loaded into the ninth bit position of the internal serial port shift register. The data is output bit by bit until the stop bit appears on the TxD pin and the transmit interrupt flag, TI (Address 0x98[1]), is automatically set, as shown in Figure 105.
START BIT TxD TI (SCON[1])
07411-079
Mode 2 (9-Bit UART with Baud Rate Fixed at fCORE/64 or fCORE/32)
Mode 2 is selected by setting SM0 and clearing SM1. In this mode, the UART operates in 9-bit mode with a fixed baud rate. The baud rate is fixed at fCORE/64 by default, although setting the SMOD bit in the program control SFR (PCON, Address 0x87[7]) doubles the frequency to fCORE/32. Eleven bits are transmitted or received: a start bit (0), eight data bits, a programmable ninth bit, and a stop bit (1). The ninth bit is most often used as a parity bit or as part of a multiprocessor communication protocol, although it can be used for anything, including a ninth data bit, if required. To use the ninth data bit as part of a communication protocol for a multiprocessor network such as RS-485, the ninth bit is set to indicate that the frame contains the address of the device with which the master wants to communicate. The devices on the network are always listening for a packet with the ninth bit set and are configured such that if the ninth bit is cleared, the frame is not valid, and a receive interrupt is not generated. If the ninth bit is set, all devices on the network receive the address and obtain a receive character interrupt. The devices examine the address and, if it matches one of the preprogrammed addresses of the device, that device configures itself to listen to all incoming frames, even those with the ninth bit cleared. Because the master has initiated communication with that device, all the following packets with the ninth bit cleared are intended specifically for that addressed device until another packet with the ninth bit set is received. If the address does not match, the device continues to listen for address packets.
STOP BIT D0 D1 D2 D3 D4 D5 D6 D7
SET INTERRUPT (FOR EXAMPLE, READY FOR MORE DATA)
Figure 105. 8-Bit Variable Baud Rate
Rev. B | Page 130 of 156
ADE5166/ADE5169/ADE5566/ADE5569
To transmit, the eight data bits must be written into the serial port buffer SFR (SBUF, Address 0x99). The ninth bit must be written to TB8 in the serial communications control SFR (SCON, Address 0x98[3]). When transmission is initiated, the eight data bits from SBUF are loaded into the transmit shift register (LSB first). The ninth data bit, held in TB8, is loaded into the ninth bit position of the transmit shift register. The transmission starts at the next valid baud rate clock. The serial port transmit interrupt flag (TI, SCON[1]) is set as soon as the transmission completes, when the stop bit appears on TxD. All of the following conditions must be met at the time the final shift pulse is generated to receive a character: * If the extended UART is disabled (EXTEN = 0 in the CFG SFR, Address 0xAF[6]), RI (SCON[0]) must be 0 to receive a character. This ensures that the data in SBUF is not overwritten if the last received character has not been read. If multiprocessor communication is enabled by setting SM2 (SCON[5]), the received ninth bit must be set to receive a character. This ensures that only frames with the ninth bit set, which are frames that contain addresses, generate a receive interrupt.
UART BAUD RATE GENERATION
Mode 0 Baud Rate Generation
The baud rate in Mode 0 is fixed. Mode 0 Baud Rate =
fCORE 12
Mode 2 Baud Rate Generation
The baud rate in Mode 2 depends on the value of the SMOD bit in the program control SFR (PCON, Address 0x87[7]). If SMOD = 0, the baud rate is 1/32 of the core clock. If SMOD = 1, the baud rate is 1/16 of the core clock. Mode 2 Baud Rate =
2 SMOD x fCORE 32
Mode 1 and Mode 3 Baud Rate Generation
The baud rates in Mode 1 and Mode 3 are determined by the overflow rate of the timer generating the baud rate, that is, Timer 1, Timer 2, or the dedicated baud rate generator, the UART timer, which has an integer and a fractional divisor.
*
Timer 1 Generated Baud Rates
When Timer 1 is used as the baud rate generator, the baud rates in Mode 1 and Mode 3 are determined by the Timer 1 overflow rate. The value of SMOD (PCON[7]) is as follows: Mode 1 or Mode 3 Baud Rate =
2 SMOD x Timer 1 Overflow Rate 32
If any of these conditions is not met, the received frame is irretrievably lost, and the receive interrupt flag (RI in the SCON SFR) is not set. Reception for Mode 2 is similar to that of Mode 1. The eight data bytes are input at RxD (LSB first) and loaded onto the receive shift register. If the received frame meets the previous criteria, the following events occur: * * * The eight bits in the receive shift register are latched into the SBUF SFR. The ninth data bit is latched into RB8 in the SCON SFR. The receiver interrupt flag (RI in the SCON SFR) is set.
The Timer 1 interrupt should be disabled in this application. The timer itself can be configured for either timer or counter operation and in any of its three running modes. In the most typical application, it is configured for timer operation in autoreload mode (high nibble of TMOD = 0010 binary, see Table 113). In that case, the baud rate is given by the following formula:
SMOD Mode 1 or Mode 3 Baud Rate = 2 x
Mode 3 (9-Bit UART with Variable Baud Rate)
Mode 3 is selected by setting both SM0 and SM1 in the SCON SFR. In this mode, the 8052 UART serial port operates in 9-bit mode with a variable baud rate. The baud rate is set by a timer overflow rate. Timer 1 or Timer 2 can be used to generate baud rates, or both timers can be used simultaneously where one generates the transmit rate and the other generates the receive rate. There is also a dedicated timer for baud rate generation, the UART timer, which has a fractional divisor to precisely generate any baud rate (see the UART Timer Generated Baud Rates section). The operation of the 9-bit UART is the same as for Mode 2, but the baud rate can be varied. In all four modes, transmission is initiated by any instruction that uses SBUF as a destination register. Reception is initiated in Mode 0 when RI = 0 and REN = 1 in the SCON SFR. Reception is initiated in the other modes by the incoming start bit if REN = 1.
32
f CORE ( 256 - TH1)
Timer 2 Generated Baud Rates
Baud rates can also be generated by using Timer 2. Using Timer 2 is similar to using Timer 1 in that the timer must overflow 16 times before a bit is transmitted or received. Because Timer 2 has a 16-bit autoreload mode, a wider range of baud rates is possible. Mode 1 or Mode 3 Baud Rate = 1 x Timer 2 Overflow Rate 16
Therefore, when Timer 2 is used to generate baud rates, the timer increments every two clock cycles rather than every core machine cycle, as before. It increments six times faster than Timer 1, and, therefore, baud rates six times faster are possible.
Rev. B | Page 131 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Because Timer 2 has 16-bit autoreload capability, very low baud rates are still possible. Timer 2 is selected as the baud rate generator by setting RCLK and/or TCLK in the Timer/Counter 2 control SFR (T2CON, Address 0xC8[5:4]). The baud rates for transmit and receive can be simultaneously different. Setting RCLK and/or TCLK puts Timer 2 into its baud rate generator mode, as shown in Figure 107. In this case, the baud rate is given by the following formula: Mode 1 or Mode 3 Baud Rate = f CORE
fCORE
FRACTIONAL /(1 + SBAUDF/64) DIVIDER TIMER 1/TIMER 2 Tx CLOCK TIMER 1/TIMER 2 Rx CLOCK 1 /2DIV + SBTH Rx CLOCK UARTBAUDEN Tx CLOCK
07411-081
0
/32
1 UART TIMER Rx/Tx CLOCK
0
Figure 106. UART Timer, UART Baud Rate
(16 x [65536 - (RCAP2H : RCAP 2L )])
UART Timer Generated Baud Rates
The high integer dividers in a UART block mean that high speed baud rates are not always possible. In addition, generating baud rates requires the exclusive use of a timer, rendering it unusable for other applications when the UART is required. To address this problem, each ADE5166/ADE5169/ADE5566/ADE5569 has a dedicated baud rate timer (UART timer) specifically for generating highly accurate baud rates. The UART timer can be used instead of Timer 1 or Timer 2 for generating very accurate high speed UART baud rates, including 115,200 bps. This timer also allows a much wider range of baud rates to be obtained. In fact, every desired bit rate from 12 bps to 393,216 bps can be generated to within an error of 0.8%. The UART timer also frees up the other three timers, allowing them to be used for different applications. A block diagram of the UART timer is shown in Figure 106.
Two SFRs, the enhanced serial baud rate control SFR (SBAUDT, Address 0x9E) and UART timer fractional divider SFR (SBAUDF, Address 0x9D), are used to control the UART timer. SBAUDT is the baud rate control SFR; it sets up the integer divider (the DIV bits, Bits[2:0]) and the extended divider (the SBTH bits, Bits[4:3]) for the UART timer. The appropriate value to write to the DIV bits and the SBTH bits can be calculated using the following formula, where fCORE is defined in the POWCON SFR (see Table 26). Note that the DIV value must be rounded down to the nearest integer.
f CORE log 16 x Baud Rate DIV + SBTH = log(2)
TIMER 1 OVERFLOW
2 0 1 SMOD TL2 (8 BITS) T2 PIN (P1.4/T2/FP23) C/ T2 = 1 1 TR2 NOTE: AVAILABILITY OF ADDITIONAL EXTERNAL INTERRUPT RELOAD 16 RCAP2L RCAP2H 0 TCLK Tx CLOCK TH2 (8 BITS) TIMER 2 OVERFLOW 1 0 RCLK 16 Rx CLOCK
fCORE
CONTROL C/ T2 = 0
T2EX PIN (P1.3/T2EX/FP24) CONTROL EXEN2
EXF 2
TIMER 2 INTERRUPT
P1.4/T2/FP23
07411-080
TRANSITION DETECTOR
Figure 107. Timer 2, UART Baud Rates
Rev. B | Page 132 of 156
ADE5166/ADE5169/ADE5566/ADE5569
SBAUDF is the fractional divider ratio required to achieve the required baud rate. The appropriate value for SBAUDF can be calculated with the following formula:
f CORE SBAUDF = 64 x - 1 16 x 2 DIV + SBTH x Baud Rate
enhanced error checking functionality is available through the frame error bit, FE, in the enhanced serial baud rate control SFR (SBAUDT, Address 0x9E[6]). The FE bit is set on framing errors for both 8-bit and 9-bit UARTs.
Rx
START D0 D1 D2 D3 D4 D5 D6 D7 STOP
FE EXTEN = 1
Acutal Baud Rate = 16 x 2
DIV + SBTH
fCORE SBAUDF x 1 + 64
Rx
Figure 108. UART Timing in Mode 1
START
For example, to obtain a baud rate of 9600 bps while operating at a core clock frequency of 4.096 MHz and with the PLL CD bits equal to 0
D0
D1
D2
D3
D4
D5
D6
D7
D8
STOP
RI FE EXTEN = 1
07411-083
4,096,000 log 16 x 9600 = 4.74 = 4 DIV + SBTH = log(2)
Note that the DIV result is rounded down.
4,096,000 SBAUDF = 64 x - 1 = 42.67 = 0x2B 16 x 23 x 9600
Figure 109. UART Timing in Mode 2 and Mode 3
Thus, the actual baud rate is 9570 bps, resulting in a 0.31% error.
UART ADDITIONAL FEATURES
Enhanced Error Checking
The extended UART provides frame error, break error, and overwrite error detection. Framing errors occur when a stop bit is not present at the end of the frame. A missing stop bit implies that the data in the frame may not have been received properly. Break error detection indicates whether the RxD line has been low for longer than a 9-bit frame. It indicates that the data just received, a 0 or null character, is not valid because the master has disconnected. Overwrite error detection indicates when the received data has not been read fast enough and, as a result, a byte of data has been lost. The 8052 standard UART offers frame error checking for an 8-bit UART through SM2 (Bit 5) and RB8 (Bit 2) in the serial communications control SFR (SCON, Address 0x98). Setting the SM2 bit prevents frames without a stop bit from being received. The stop bit is latched into the RB8 bit. This bit can be examined to determine if a valid frame was received. The 8052 does not, however, provide frame error checking for a 9-bit UART. This
The 8052 standard UART does not provide break error detection. However, for an 8-bit UART, a break error can be detected when the received character is 0, a null character, and when there is a no stop bit because the RB8 bit is low. Break error detection is not possible for a 9-bit 8052 UART because the stop bit is not recorded. The ADE5166/ADE5169/ADE5566/ADE5569 enhanced break error detection is available through the BE bit (SBAUDT[5]). The 8052 standard UART prevents overwrite errors by not allowing a character to be received when RI, the receive interrupt flag (SCON[0]), is set. However, it does not indicate if a character has been lost because the RI bit is set when the frame is received. The enhanced UART overwrite error detection provides this information. When the enhanced 8052 UART is enabled, a frame is received regardless of the state of the RI flag. If RI = 1 when a new byte is received, the byte in SCON is overwritten, and the overwrite error flag, OWE2 in the Serial Communications Control 2 SFR (SCON2, Address 0xE1[5]), is set. The overwrite error flag is cleared when SBUF is read. The extended UART is enabled by setting the EXTEN bit in the configuration SFR (CFG, Address 0xAF[6]).
UART TxD Signal Modulation
There is an internal 38 kHz signal that can be OR'ed with the UART transmit signal for use in remote control applications (see the 38 kHz Modulation section).
Rev. B | Page 133 of 156
07411-082
Note that SBAUDF should be rounded to the nearest integer. After the values for DIV and SBAUDF are calculated, the actual baud rate can be calculated with the following formula:
RI
ADE5166/ADE5169/ADE5566/ADE5569 UART2 SERIAL INTERFACE
The ADE5166/ADE5169/ADE5566/ADE5569 UART2 is an 8-bit or 9-bit UART with variable baud rate. Variable baud rates are defined by using an internal timer to generate any rate between 300 bauds/sec and 115,200 bauds/sec. The UART2 serial interface provided in the ADE5166/ADE5169/ ADE5566/ADE5569 is a full-duplex serial interface. It is also receive buffered by storing the first received byte in a receive buffer until the reception of the second byte is complete. The physical interface to the UART is provided via the RxD2 (P0.7/SS/T1/RxD2) pin and the TxD2 (SDEN/P2.3/TxD2) pin, whereas the firmware interface is through the SFRs presented in Table 145. Both the serial port receive and transmit registers are accessed through the SBUF2 SFR (Address 0xEB). Writing to SBUF2 loads the transmit register, and reading SBUF2 accesses a physically separate receive register. An enhanced UART2 mode is offered by using the UART2 timer and providing enhanced frame error, break error, and overwrite error detection. The SBAUD2 SFR (Address 0xEE) is used to configure the UART2 timer and to indicate the enhanced UART2 errors.
UART2 SFRs
Table 145. Serial Port 2 SFRs
SFR SCON2 SBUF2 SBAUD2 Address 0xE1 0xEB 0xEE Bit Addressable No No No Description Serial Communications Control 2 (see Table 146). Serial Port 2 buffer (see Table 147). Enhanced Serial Baud Rate Control 2 (see Table 148).
Table 146. Serial Communications Control 2 SFR (SCON2, Address 0xE1)
Bit 7 6 5 Mnemonic N/A EN-T8 OWE2 Default N/A 0 0 Description Reserved. 9-bit UART, variable baud rate enable bit. When set, the UART2 is in 9-bit mode. Overwrite error. This bit is set when new data is received and RI2 = 1 in the SCON SFR. It indicates that SBUF2 was not read before the next character was transferred in, causing the prior SBUF2 data to be lost. Write a 0 to this bit to clear it. Frame error. This bit is set when the received frame does not have a valid stop bit. This bit is read only and is updated every time a frame is received. Break error. This bit is set whenever the receive data line (RxD2) is low for longer than a full transmission frame, the time required for a start bit, eight data bits, a parity bit, and half a stop bit. This bit is updated every time a frame is received. Serial Port 2 receive enable bit. Set by user software to enable serial port reception. Cleared by user software to disable serial port reception. Serial Port 2 transmit interrupt flag. Set by hardware at the end of the eighth bit, TI2 must be cleared by user software. Serial Port 2 receive interrupt flag. Set by hardware at the end of the eighth bit, RI2 must be cleared by user software.
4 3
FE2 BE2
0 0
2 1 0
REN2 TI2 RI2
0 0 0
Table 147. Serial Port 2 Buffer SFR (SBUF2, Address 0xEB)
Bit [7:0] Mnemonic SBUF2 Default 0 Description Serial Port 2 data buffer.
Table 148. Enhanced Serial Baud Rate Control 2 SFR (SBAUD2, Address 0xEE)
Bit 7 6 5 [4:3] Mnemonic TB8_2 RB8_2 SBF2 SBTH2 Default 0 0 Description Serial port transmit (Bit 9). The data loaded into TB8_2 is the ninth data bit transmitted in 9-bit mode. Serial port receive (Bit 9). The ninth data bit received in 9-bit mode is latched into RB8_2. For 8-bit mode, the stop bit is latched into RB8_2. Fractional divider Boolean. When set, SBAUDF2 = 0x2B. When cleared, SBAUDF2 = 0x07. Extended divider ratio for baud rate setting (see Table 149).
0
Rev. B | Page 134 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Bit [2:0] Mnemonic DIV2 Default 000 Description Binary divider. DIV2 Result 000 Divide by 1 (see Table 149) 001 Divide by 2 (see Table 149) 010 Divide by 4 (see Table 149) 011 Divide by 8 (see Table 149) 100 Divide by 16 (see Table 149) 101 Divide by 32 (see Table 149) 110 Divide by 164 (see Table 149) 111 Divide by 128 (see Table 149)
Table 149. Common Baud Rates Using the UART2 Timer with a 4.096 MHz PLL Clock
Ideal Baud 115,200 115,200 57,600 57,600 38,400 38,400 38,400 19,200 19,200 19,200 19,200 9600 9600 9600 9600 9600 4800 4800 4800 4800 4800 4800 2400 2400 2400 2400 2400 2400 2400 300 300 300 300 300 300 300 300 CD 0 1 0 1 0 1 2 0 1 2 3 0 1 2 3 4 0 1 2 3 4 5 0 1 2 3 4 5 6 0 1 2 3 4 5 6 7 SBTH2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 DIV2 1 0 2 1 2 1 0 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0 7 7 7 6 5 4 3 2 SBAUDT 0x01 0x00 0x02 0x01 0x02 0x01 0x00 0x03 0x02 0x01 0x00 0x04 0x03 0x02 0x01 0x00 0x05 0x04 0x03 0x02 0x01 0x00 0x06 0x05 0x04 0x03 0x02 0x01 0x00 0x17 0x0F 0x07 0x06 0x05 0x04 0x03 0x02 SBF2 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 SBAUDF2 0x07 0x07 0x07 0x07 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B 0x2B % Error +0.16 +0.16 +0.16 +0.16 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31 -0.31
Rev. B | Page 135 of 156
ADE5166/ADE5169/ADE5566/ADE5569
UART2 OPERATION MODES
The UART2 has two operation modes in which each data byte (LSB first) is preceded by a start bit (0), followed by a stop bit (1). Therefore, each frame consists of 10 bits transmitted on the TxD2 pin or received on the RxD2 pin. The baud rate is set by a dedicated timer for baud rate generation, the UART2 timer, which has a fractional divisor to precisely generate any baud rate. Transmission is initiated by a write to the Serial Port 2 buffer SFR (SBUF2, Address 0xEB). Next, a stop bit (1) is loaded into the ninth bit position of the serial port shift register. The data is output bit by bit until the stop bit appears on the TxD2 pin, and the Serial Port 2 transmit interrupt flag, TI2 (SCON2[1]) is automatically set, as shown in Figure 110.
TxD2 TI2 (SCON2[1])
07411-188
9-Bit UART2 with Variable Baud Rate
Setting EN-T8 (SCON2[6]) selects the 9-bit mode. In this mode, the UART2 serial port operates in 9-bit mode with a variable baud rate. The baud rate is set by a dedicated timer for baud rate generation, the UART2 timer, which has a fractional divisor to precisely generate any baud rate (see the UART2 Timer Generated Baud Rates section). The operation of the 9-bit UART2 is the same as for the 9-bit mode of the UART. In both modes, transmission is initiated by any instruction that uses SBUF2 as a destination register. Reception is initiated in 8-bit mode when RI2 = 0 and REN2 = 1 in the SCON2 SFR. Reception is initiated in the 9-bit mode by the incoming start bit if REN2 = 1.
UART2 BAUD RATE GENERATION
The baud rate is determined by the overflow rate of the dedicated baud rate generator, the UART2 timer, which has an integer and fractional divisor.
START BIT
STOP BIT D0 D1 D2 D3 D4 D5 D6 D7
UART2 Timer Generated Baud Rates
SET INTERRUPT (FOR EXAMPLE, READY FOR MORE DATA)
Figure 110. 8-Bit Variable Baud Rate
Reception is initiated when a 1-to-0 transition is detected on the RxD2 pin. Assuming that a valid start bit is detected, character reception continues. The eight data bits are clocked into the serial port shift register. All of the following conditions must be met at the time the final shift pulse is generated to receive a character: * If the extended UART is disabled (EXTEN = 0, CFG[6]), RI2 (SCON2[0]) must be 0 to receive a character. This ensures that the data in the SBUF2 SFR is not overwritten if the last received character has not been read. If frame error checking is enabled by setting FE2 (SCON2[4]), the received stop bit must be set to receive a character. This ensures that every character received comes from a valid frame, with both a start bit and a stop bit.
The enhanced Serial Baud Rate Control 2 SFR (SBAUD2, Address 0xEE) is used to control the UART2 timer. SBAUD2 is the baud rate control SFR; it sets up the integer divider (DIV2, SBAUD2[2:0]) and the extended divider (SBTH2, SBAUD2[4:3]) for the UART2 timer. The desired value to write to DIV2 and to SBTH2 can be calculated using the following formula, where fcore is defined in the POWCON SFR. Note that the DIV2 value must be rounded down to the nearest integer.
f core log 16 x Baud Rate DIV2 + SBTH2 = (2 ) log SBAUDF2 is the fractional divider ratio required to achieve the required baud rate. The appropriate value for SBAUDF2 can be calculated with the following formula:
f core SBAUDF2 = 64 x - 1 DIV 2 + SBTH 2 16 x 2 x Baud Rate
*
If any of these conditions is not met, the received frame is irretrievably lost, and the Serial Port 2 receive interrupt flag, RI2 (SCON2[0]), is not set. If the received frame meets the preceding conditions, the following events occur: * * The eight bits in the receive shift register are latched into SBUF2. The Serial Port 2 receiver interrupt flag (RI2) is set.
Note that SBAUDF2 can take only two values, 0x2B or 0x07, by clearing or by setting the SBF2 bit (SBAUD2[5]), respectively. These values were chosen to provide an accurate baud rate for 300, 2400, 4800, 9600, 19,200, 38,400, 57,600, and 115,200 bps. When DIV2 and SBAUDF2 are calculated, the actual baud rate can be calculated, using the following formula: Actual Baud Rate =
f core SBAUDF 2 16 x 2DIV 2 + SBTH 2 x 1 + 64
Transmission is initiated by any instruction that uses SBUF2 as a destination register. Reception is initiated by the incoming start bit if REN2 = 1 in the SCON2 SFR, Address0xE1[2].
Rev. B | Page 136 of 156
ADE5166/ADE5169/ADE5566/ADE5569
For example, to get a baud rate of 9600 while operating at a core clock frequency of 4.096 MHz, with the PLL CD bits (POWCON[2:0]) equal to 0 DIV2 + SBTH2 = log(4,096,000/(16 x 9600))/log2 = 4.74 = 4 Note that the DIV result is rounded down. SBAUDF2 = 64 x (4,096,000/(16 x 23 x 9600) - 1) = 42.67 = 0x2B Therefore, the actual baud rate is 9570 bps, which gives an error of 0.31%. that the data in the frame may not have been received properly. Break error detection indicates whether the RxD2 line is low for longer than a 9-bit frame. It indicates that the data just received, a 0 or NULL character, is not valid because the master has disconnected. Overwrite error detection indicates whether the received data is not read fast enough and, as result, a byte of data is lost.
UART2 TxD2 Signal Modulation
There is an internal 38 kHz signal that can be read with the UART2 transmit signal for use in remote control applications. One of the events that can wake the MCU from sleep mode is activity on the RxD2 (P0.7/SS/T1/RxD2) pin. See the 3.3 V Peripherals and Wake-Up Events section for more information.
UART2 ADDITIONAL FEATURES
Enhanced Error Checking
The extended UART2 provides frame error, break error, and overwrite error detection. Framing errors occur when a stop bit is not present at the end of the frame. A missing stop bit implies
Rev. B | Page 137 of 156
ADE5166/ADE5169/ADE5566/ADE5569 SERIAL PERIPHERAL INTERFACE (SPI)
The ADE5166/ADE5169/ADE5566/ADE5569 integrate a complete hardware serial peripheral interface on chip. The SPI is full duplex so that eight bits of data are synchronously transmitted and simultaneously received. This SPI implementation is double buffered, allowing users to read the last byte of received data while a new byte is shifted in. The next byte to be transmitted can be loaded while the current byte is shifted out. The SPI port can be configured for master or slave operation. The physical interface to the SPI is via the MISO (P0.5/MISO/ZX), MOSI (P0.4/MOSI/SDATA), SCLK (P0.6/SCLK/T0), and SS (P0.7/SS/T1/RxD2) pins, while the firmware interface is via the SFRs listed in Table 150. Note that the SPI pins are shared with the I2C pins. Therefore, the user can enable only one interface at a time. The SCPS bit in the configuration SFR (CFG, Address 0xAF[5]) selects which peripheral is active.
SPI REGISTERS
Table 150. SPI SFR List
SFR Address 0x9A 0x9B 0xE8 0xE9 0xEA Mnemonic SPI2CTx SPI2CRx SPIMOD1 SPIMOD2 SPISTAT R/W W R R/W R/W R/W Length (Bits) 8 8 8 8 8 Default 0 0 0x10 0 0 Description SPI/I2C transmit buffer (see Table 151). SPI/I2C receive buffer (see Table 152). SPI Configuration SFR 1 (see Table 153). SPI Configuration SFR 2 (see Table 154). SPI interrupt status (see Table 155).
Table 151. SPI/I2C Transmit Buffer SFR (SPI2CTx, Address 0x9A)
Bit [7:0] Mnemonic SPI2CTx Default 0 Description SPI or I2C transmit buffer. When the SPI2CTx SFR is written, its content is transferred to the transmit FIFO input. When a write is requested, the FIFO output is sent on the SPI or I2C bus.
Table 152. SPI/I2C Receive Buffer SFR (SPI2CRx, Address 0x9B)
Bit [7:0] Mnemonic SPI2CRx Default 0 Description SPI or I2C receive buffer. When the SPI2CRx SFR is read, one byte from the receive FIFO output is transferred to the SPI2CRx SFR. A new data byte from the SPI or I2C bus is written to the FIFO input.
Rev. B | Page 138 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 153. SPI Configuration SFR 1 (SPIMOD1, Address 0xE8)
Bit [7:6] 5 Bit Address 0xEF to 0xEE 0xED Mnemonic Reserved INTMOD Default 00 0 Description Reserved. SPI interrupt mode. INTMOD Result 0 SPI interrupt is set when the SPI Rx buffer is full 1 SPI interrupt is set when the SPI Tx buffer is empty SS output control (see Figure 111). Result The SS pin is held low while this bit is cleared, allowing manual chip select control using the SS pin 1 Single byte read or write; the SS pin goes low during a single byte transmission and then returns high Continuous transfer; the SS pin goes low during the duration of the multibyte continuous transfer and then returns high Slave mode, SS input enable. When this bit is set to Logic 1, the SS pin is defined as the slave select input pin for the SPI slave interface. Receive buffer overflow write enable. RxOFW Result 0 If the SPI2CRx SFR has not been read when a new data byte is received, the new byte is discarded 1 If the SPI2CRx SFR has not been read when a new data byte is received, the new byte overwrites the old data Master mode, SPI SCLK frequency. SPIR Result (fCORE = 4.096 MHz) 00 fCORE/8 = 512 kHz 01 fCORE/16 = 256 kHz 10 fCORE/32 = 128 kHz 11 fCORE/64 = 64 kHz AUTO_SS 0
4
0xEC
AUTO_SS
1
3
0xEB
SS_EN
0
2
0xEA
RxOFW
0
[1:0]
0xE9 to 0xE8
SPIR
00
Rev. B | Page 139 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 154. SPI Configuration SFR 2 (SPIMOD2, Address 0xE9)
Bit 7 Mnemonic SPICONT Default 0 Description Master mode, SPI continuous transfer mode enable bit. SPICONT Result 0 The SPI interface stops after one byte is transferred and SS is deasserted. A new data transfer can be initiated after a stalled period. 1 The SPI interface continues to transfer data until no valid data is available in the SPI2CTx SFR. SS remains asserted until the SPI2CTx SFR and the transmit shift registers are empty. SPI interface enable bit. SPIEN Result 0 The SPI interface is disabled. 1 The SPI interface is enabled. SPI open-drain output configuration bit. SPIODO Result 0 Internal pull-up resistors are connected to the SPI outputs. 1 The SPI outputs are open drain and need external pull-up resistors. The pull-up voltage should not exceed the specified operating voltage. SPI master mode enable bit. SPIMS_b Result 0 The SPI interface is defined as a slave. 1 The SPI interface is defined as a master. SPI clock polarity configuration bit (see Figure 113). SPICPOL Result 0 The default state of SCLK is low, and the first SCLK edge is rising. Depending on the SPICPHA bit, the SPI data output changes state on the falling or rising edge of SCLK, whereas the SPI data input is sampled on the rising or falling edge of SCLK. 1 The default state of SCLK is high, and the first SCLK edge is falling. Depending on the SPICPHA bit, the SPI data output changes state on the rising or falling edge of SCLK, whereas the SPI data input is sampled on the falling or rising edge of SCLK. SPI clock phase configuration bit (see Figure 113). SPICPHA Result 0 The SPI data output changes state when SS goes low at the second edge of SCLK and then every two subsequent edges, whereas the SPI data input is sampled at the first SCLK edge and then every two subsequent edges. 1 The SPI data output changes state at the first edge of SCLK and then every two subsequent edges, whereas the SPI data input is sampled at the second SCLK edge and then every two subsequent edges. Master mode, LSB first configuration bit. SPILSBF Result 0 The MSB of the SPI outputs is transmitted first. 1 The LSB of the SPI outputs is transmitted first. Transfer and interrupt mode of the SPI interface. TIMODE Result 1 See Bit 5, Bit 4, and Bit 1 of Table 155 for mode selection.
6
SPIEN
0
5
SPIODO
0
4
SPIMS_b
0
3
SPICPOL
0
2
SPICPHA
0
1
SPILSBF
0
0
TIMODE
1
Rev. B | Page 140 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 155. SPI Interrupt Status SFR (SPISTAT, Address 0xEA)
Bit 7 Mnemonic BUSY Default 0 Description SPI peripheral busy flag. BUSY Result 0 The SPI peripheral is idle. 1 The SPI peripheral is busy transferring data in slave or master mode. SPI multimaster error flag. MMERR Result 0 A multiple master error has not occurred. 1 If the SS_EN bit (SPIMOD1, Address 0xE8[3]) is set, enabling the slave select input and asserting the SS pin while the SPI peripheral is transferring data as a master, this flag is raised to indicate the error. Write a 0 to this bit to clear it. SPI receive overflow error flag. Reading the SPI2CRx SFR clears this bit. SPIRxOF TIMODE Result 0 X1 The SPI2CRx SFR (Address 0x9B) contains valid data. 1 1 Set if the SPI2CRx SFR is not read before the end of the next byte transfer. If the RxOFW bit (SPIMOD1, Address 0xE8[2]) is set and this condition occurs, SPI2CRx is overwritten. SPI receive mode interrupt flag. Reading the SPI2CRx SFR clears this bit. SPIRxIRQ TIMODE Result 0 X1 The SPI2CRx SFR does not contain new data. 1 0 Set when the SPI2CRx SFR contains new data. If the SPI/I2C interrupt is enabled, an interrupt is generated when this bit is set. If the SPI2CRx SFR is not read before the end of the current byte transfer, the transfer stops and the SS pin is deasserted. 1 1 The SPI2CRx SFR contains new data. Status bit for the SPI Rx buffer. When set, the Rx FIFO is full. A read of the SPI2CRx SFR clears this flag. Status bit for SPI Tx buffer. When set, the Tx FIFO is underflowing and data can be written into SPI2CTx (Address 0x9A). Write a 0 to this bit to clear it. SPI transmit mode interrupt flag. Writing new data to the SPI2CTx SFR clears this bit. SPITxIRQ TIMODE Result 0 X1 The SPI2CTx SFR is full. 1 0 The SPI2CTx SFR is empty. 1 1 Set when the SPI2CTx SFR is empty. If the SPI/I2C interrupt is enabled, an interrupt is generated when this bit is set. If new data is not written to the SPI2CTx SFR before the end of the current byte transfer, the transfer stops and the SS pin is deasserted. Write a 0 to this bit to clear it. Status bit for the SPI Tx buffer. When set, the SPI Tx buffer is full. Write a 0 to this bit to clear it.
6
MMERR
0
5
SPIRxOF
0
4
SPIRxIRQ
0
3 2 1
SPIRxBF SPITxUF SPITxIRQ
0 0 0
0
1
SPITxBF
0
X = don't care.
SPI PINS
MISO (Master In, Slave Out Data I/O Pin)
The MISO (P0.5/MISO/ZX) pin is configured as an input line in master mode and as an output line in slave mode. The MISO line on the master (data in) should be connected to the MISO line in the slave device (data out). The data is transferred as byte-wide (8-bit) serial data, MSB first.
SCLK (Serial Clock I/O Pin)
The master serial clock (SCLK) is used to synchronize the data being transmitted and received through the MOSI and MISO data lines. The SCLK (P0.6/SCLK/T0) pin is configured as an output in master mode and as an input in slave mode. In master mode, the bit rate, polarity, and phase of the clock are controlled by SPI Configuration SFR 1 (SPIMOD1, Address 0xE8) and SPI Configuration SFR 2 (SPIMOD2, Address 0xE9). In slave mode, the SPIMOD2 SFR (Address 0xE9) must be configured with the phase and polarity of the expected input clock. In both master and slave modes, the data is transmitted on one edge of the SCLK signal and sampled on the other. It is important, therefore, that the SPICPOL and SPICPHA bits (SPIMOD2[3:2]) be configured the same for the master and slave devices.
MOSI (Master Out, Slave In Pin)
The MOSI (P0.4/MOSI/SDATA) pin is configured as an output line in master mode and as an input line in slave mode. The MOSI line on the master (data out) should be connected to the MOSI line in the slave device (data in). The data is transferred as bytewide (8-bit) serial data, MSB first.
Rev. B | Page 141 of 156
ADE5166/ADE5169/ADE5566/ADE5569
SS (Slave Select Pin)
In SPI slave mode, a transfer is initiated by the assertion of SS low. The SPI port then transmits and receives 8-bit data until the data is concluded by the deassertion of SS according to the AUTO_SS bit setting (SPIMOD1[4]). In slave mode, SS is always an input. In SPI master mode, the SS (P0.7/SS/T1/RxD2) pin can be used to control data transfer to a slave device. In the automatic slave select control mode, the SS pin is asserted low to select the slave device and then raised to deselect the slave device after the transfer is complete. Automatic slave select control is enabled by setting the AUTO_SS bit (SPIMOD1[4]). In a multimaster system, the SS pin can be configured as an input so that the SPI peripheral can operate as a slave in some situations and as a master in others. In this case, the slave selects for the slaves controlled by this SPI peripheral should be generated with general I/O pins.
Continuous Mode, SPICONT (SPIMOD2[7]) = 1
1. 2. 3. 4. 5. 6. 7. Write to the SPI2CTx SFR. SS is asserted low, and a write routine is initiated. Wait for the SPITxIRQ interrupt flag to write to SPI2CTx SFR. Transfer continues until the SPI2CTx register and transmit shift registers are empty. The SPITxIRQ interrupt flag is set when the SPI2CTx register is empty. SS is deasserted high. Write to the SPI2CTx SFR to clear the SPITxIRQ interrupt flag.
Figure 111 shows the SPI output for certain automatic chip select and continuous mode selections. Note that if the continuous mode is not used, a short delay is inserted between transfers.
SS SCLK
SPI MASTER OPERATING MODES
The double-buffered receive and transmit registers can be used to maximize the throughput of the SPI peripheral by continuously streaming out data in master mode. The continuous transmit mode is designed to use the full capacity of the SPI. In this mode, the master transmits and receives data until the SPI/I2C transmit buffer SFR (SPI2CTx, Address 0x9A) is empty at the start of a byte transfer. Continuous mode is enabled by setting the SPICONT bit (SPIMOD2[7]). The SPI peripheral also offers a single byte read/ write function. In master mode, the type of transfer is handled automatically, depending on the configuration of the SPICONT bit. The following procedures show the sequence of events that should be performed for each master operating mode. Based on the SS configuration, some of these events take place automatically.
AUTO_SS = 1 SPICONT = 1
DIN
DIN1
DIN2
DOUT
DOUT1
DOUT2
SS SCLK
AUTO_SS = 1 SPICONT = 0
DIN
DIN1
DIN2
DOUT
DOUT1
DOUT2
Procedures for Using SPI as a Master Single-Byte Write Mode, SPICONT (SPIMOD2[7]) = 0
1. 2. 3. 4. 5. Write to the SPI2CTx SFR. SS is asserted low, and a write routine is initiated. The SPITxIRQ interrupt flag (SPISTAT[1]) is set when the SPI2CTx register is empty. SS is deasserted high. Write to the SPI2CTx SFR to clear the SPITxIRQ interrupt flag.
AUTO_SS = 0 SPICONT = 0 (MANUAL SS CONTROL)
SS SCLK
DIN
DIN1
DIN2
DOUT
DOUT1
DOUT2
Figure 111. Automatic Chip Select and Continuous Mode Output
Note that reading the contents of the SPI/I2C receive buffer SFR (SPI2CRx, Address 0x9B) should be done using a 2-cycle instruction set, such as MOV A or SPI2CRX. Using a 3-cycle instruction set, such as MOV 0x3D or SPI2CRX, does not transfer the right information into the target register.
Rev. B | Page 142 of 156
07411-084
ADE5166/ADE5169/ADE5566/ADE5569
SPI INTERRUPT AND STATUS FLAGS
The SPI interface has several status flags that indicate the status of the double-buffered receive and transmit registers. Figure 112 shows when the status and interrupt flags are raised. The transmit interrupt occurs when the transmit shift register is loaded with the data in the SPI/I2C transmit buffer SFR (SPI2CTx, Address 0x9A). If the SPI master is in transmit operating mode and the SPI2CTx SFR has not been written with new data by the beginning of the next byte transfer, the transmit operation stops. When a new byte of data is received in the SPI/I2C receive buffer SFR (SPI2CRx, Address 0x9B), the SPI receive interrupt flag, SPIRxIRQ (SPISTAT, Address 0xEA[4]), is raised. If the data in the SPI/I2C receive buffer SFR (SPI2CRx, Address 0x9B) is not
SCLK (SPICPOL = 1) SCLK (SPICPOL = 0)
read before new data is ready to be loaded into the SPI2CRx SFR, an overflow condition occurs. This overflow condition, indicated by the SPIRxOF flag (SPISTAT[5]), forces the new data to be discarded or overwritten, depending on the setting of the RxOFW bit (SPIMOD1, Address 0xE8[2]).
SPITx SPITxIRQ = 1 TRANSMIT SHIFT REGISTER SPIRx SPIRxIRQ = 1 RECEIVE SHIFT REGISTER
SPITx (EMPTY) STOPS TRANSFER IF TIMODE = 1 TRANSMIT SHIFT REGISTER
SPIRx (FULL)
07411-085
SPIRxOF = 1
RECEIVE SHIFT REGISTER
Figure 112. SPI Receive and Transmit Interrupt and Status Flags
SS
MISO
? MSB BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1
LSB
MOSI SPICPHA = 1 SPIRx AND SPITx FLAGS WITH INTMOD = 1 SPIRx AND SPITx FLAGS WITH INTMOD = 0
? MSB BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1
LSB
MISO
MSB BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1
LSB
?
MOSI SPICPHA = 0 SPIRx AND SPITx FLAGS WITH INTMOD = 1
MSB BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1
LSB
?
Figure 113. SPI Timing Configurations
Rev. B | Page 143 of 156
07411-086
SPIRx AND SPITx FLAGS WITH INTMOD = 0
ADE5166/ADE5169/ADE5566/ADE5569 I2C-COMPATIBLE INTERFACE
The ADE5166/ADE5169/ADE5566/ADE5569 support a fully licensed I2C interface. The I2C interface is implemented as a full hardware master. SDATA (P0.4/MOSI/SDATA) is the data I/O pin, and SCLK (P0.6/SCLK/T0) is the serial clock. These two pins are shared with the MOSI and SCLK pins of the on-chip SPI interface. Therefore, the user can enable only one interface at a time on these pins. The SCPS bit in the configuration SFR (CFG, Address 0xAF[5]) selects which peripheral is active. The two pins used for data transfer, SDATA and SCLK, are configured in a wire-AND format that allows arbitration in a multimaster system. The transfer sequence of an I C system consists of a master device initiating a transfer by generating a start condition while the bus is idle. The master transmits the address of the slave device and the direction of the data transfer in the initial address transfer. If the slave acknowledges, the data transfer is initiated. This continues until the master issues a stop condition and the bus becomes idle.
2
The bit rate is defined in the I2CMOD SFR (Address 0xE8) as follows: f SCLK = fCORE 16 x 2 I 2CR[1:0]
SLAVE ADDRESSES
The I2C slave address SFR (I2CADR, Address 0xE9) contains the slave device ID. The LSB of this register contains a read/write request. A write to this SFR starts the I2C communication.
I2C REGISTERS
The I2C peripheral interface consists of five SFRs. * * * * * I2CMOD SPI2CSTAT I2CADR SPI2CTx SPI2CRx
SERIAL CLOCK GENERATION
The I2C master in the system generates the serial clock for a transfer. The master channel can be configured to operate in fast mode (256 kHz) or in standard mode (32 kHz).
Table 156. I2C SFR List
SFR Address 0x9A 0x9B 0xE8 0xE9 0xEA Mnemonic SPI2CTx SPI2CRx I2CMOD I2CADR SPI2CSTAT R/W W R R/W R/W R/W Length 8 8 8 8 8
Because the SPI and I2C serial interfaces share the same pins, they also share the same SFRs, such as the SPI2CTx and SPI2CRx SFRs. In addition, the I2CMOD, I2CADR, and SPI2CSTAT SFRs are shared with the SPIMOD1, SPIMOD2, and SPISTAT SFRs, respectively.
Default 0 0 0 0
Description SPI/I2C transmit buffer (see Table 151). SPI/I2C receive buffer (see Table 152). I2C mode (see Table 157). I2C slave address (see Table 158). I2C interrupt status (see Table 159).
Table 157. I2C Mode SFR (I2CMOD, Address 0xE8)
Bit 7 [6:5] Bit Address 0xEF 0xEE to 0xED Mnemonic I2CEN I2CR Default 0 00 Description I2C enable bit. When this bit is set to Logic 1, the I2C interface is enabled. A write to the I2CADR SFR (Address 0xE9) starts a communication. I2C SCLK frequency. I2CR Result 00 fCORE/16 = 256 kHz if fCORE = 4.096 MHz 01 fCORE/32 = 128 kHz if fCORE = 4.096 MHz 10 fCORE/64 = 64 kHz if fCORE = 4.096 MHz 11 fCORE/128 = 32 kHz if fCORE = 4.096 MHz Configures the length of the I2C received FIFO buffer. The I2C peripheral stops when I2CRCT[4:0] + 1 byte have been read, or if an error occurs.
[4:0]
0xEC to 0xE8
I2CRCT
00000
Table 158. I2C Slave Address SFR (I2CADR, Address 0xE9)
Bit [7:1] 0 Mnemonic I2CSLVADR I2CR_W Default 0 0 Description Address of the I2C slave being addressed. Writing to this register starts the I2C transmission (read or write). Command bit for read or write. When this bit is set to Logic 1, a read command is transmitted on the I2C bus. Data from the slave in the SPI2CRx SFR (Address 0x9B) is expected after a command byte. When this bit is set to Logic 0, a write command is transmitted on the I2C bus. Data to the slave is expected in the SPI2CTx SFR.
Rev. B | Page 144 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 159. I2C Interrupt Status SFR (SPI2CSTAT, Address 0xEA)
Bit 7 6 Mnemonic I2CBUSY I2CNOACK Default 0 0 Description This bit is set to Logic 1 when the I2C interface is used. When set, the Tx FIFO is emptied. I2C no acknowledgement transmit interrupt. This bit is set to Logic 1 when the slave device does not send an acknowledgement. The I2C communication is stopped after this event. Write a 0 to this bit to clear it. I2C receive interrupt. This bit is set to Logic 1 when the receive FIFO is not empty. Write a 0 to this bit to clear it. I2C transmit interrupt. This bit is set to Logic 1 when the transmit FIFO is empty. Write a 0 to this bit to clear it. Status bits for 3- or 4-byte deep I2C FIFO. The FIFO monitored in these two bits is the one currently used in I2C communication (receive or transmit) because only one FIFO is active at a time. I2CFIFOSTAT Result 00 FIFO empty 01 Reserved 10 FIFO half full 11 FIFO full Set when trying to write and read at the same time. Write a 0 to this bit to clear it. Set when a write is attempted when the I2C transmit FIFO is full. Write a 0 to this bit to clear it.
5 4 [3:2]
I2CRxIRQ I2CTxIRQ I2CFIFOSTAT
0 0 00
1 0
I2CACC_ERR I2CTxWR_ERR
0 0
READ AND WRITE OPERATIONS
1 SCLK 9 1 9 1 9
SDATA START BY MASTER
A6
A5
A4
A3
A2
A1
A0
R/W ACK BY SLAVE
D7
D6
D5
D4
D3
D2
D1
D0 ACK BY MASTER
D7
D6
D5
D4
D3
D2
D1
D0
07411-087
FRAME 1 SERIAL BUS ADDRESS BYTE
FRAME 2 DATA BYTE 1 FROM MASTER
FRAME N + 1 DATA BYTE N FROM SLAVE
NACK BY STOP BY MASTER MASTER
Figure 114. I2C Read Operation
1 SCLK
9
1
9
SDATA START BY MASTER
A6
A5
A4
A3
A2
A1
A0
R/W ACK BY SLAVE
D7
D6
D5
D4
D3
D2
D1
D0
07411-088
FRAME 1 SERIAL BUS ADDRESS BYTE
FRAME 2 DATA BYTE 1 FROM MASTER
ACK BY SLAVE
STOP BY MASTER
Figure 115. I2C Write Operation
Figure 114 and Figure 115 depict I2C read and write operations, respectively. Note that the LSB of the I2CADR SFR (Address 0xE9) is used to select whether a read or write operation is performed on the slave device. During the read operation, the master acknowledgements are generated automatically by the I2C peripheral. The master-generated no acknowledge (NACK) before the end of a read operation is also automatically generated after the I2CRCT bits in the I2CMOD SFR (Address 0xE8[4:0]) have been read from the slave. If the I2CADR register is updated during a transmission, the master generates a start condition instead of a stop at the end of the read or write operation and then continues with the next communication.
Reading the SPI/I2C Receive Buffer SFR (SPI2CRx, Address 0x9B)
Reading the SPI2CRx SFR should be done with a 2-cycle instruction, such as
Mov a, spi2crx or Mov R0, spi2crx.
A 3-cycle instruction, such as
Mov 3dh, spi2crx
does not transfer the right data into RAM Address 0x3D.
Rev. B | Page 145 of 156
ADE5166/ADE5169/ADE5566/ADE5569
I2C RECEIVE AND TRANSMIT FIFOS
The I2C peripheral has a 4-byte receive FIFO and a 4-byte transmit FIFO. The buffers reduce the overhead associated with using the I2C peripheral. Figure 116 shows the operation of the I2C receive and transmit FIFOs. The Tx FIFO buffer can be loaded with four bytes to be transmitted to the slave at the beginning of a write operation. When the transmit FIFO is empty, the I2C transmit interrupt flag (I2CTxIRQ) is set in the I2C interrupt status SFR (SPI2CSTAT, Address 0xEA[4]), and the PC vectors to the I2C interrupt vector if this interrupt is enabled. If a new byte is not loaded into the Tx FIFO before it is needed in the transmit shift register, the communication stops. An error, such as not receiving an acknowledgement, also causes the communication to terminate. In case of an error during a write operation, the Tx FIFO is flushed. The Rx FIFO buffer allows four bytes to be read in from the slave before the MCU has to read the data. A receive interrupt can be gener-ated after each byte is received or when the Rx FIFO is full. If the peripheral is reading from a slave address, the communication stops when the number of received bytes equals the number set in the I2CRCT bits in the I2CMOD SFR (Address 0xE8[4:0]). An error, such as not receiving an acknowledgement, also causes the communication to terminate.
CODE TO FILL Tx FIFO: MOV MOV MOV MOV I2CTx, I2CTx, I2CTx, I2CTx, TxDATA1 TxDATA2 TxDATA3 TxDATA4 I2CTx CODE TO READ Rx FIFO: MOV A, MOV A, MOV A, MOV A, I2CRx; I2CRx; I2CRx; I2CRx; RESULT: A = RxDATA1 RESULT: A = RxDATA2 RESULT: A = RxDATA3 RESULT: A = RxDATA4 I2CRx
TxDATA4 4-BYTE FIFO TxDATA3 TxDATA2 TxDATA1 4-BYTE FIFO
RxDATA1 RxDATA2 RxDATA3 RxDATA4
07411-089
TRANSMIT SHIFT REGISTER
RECEIVE SHIFT REGISTER
Figure 116. I2C FIFO Operation
Rev. B | Page 146 of 156
ADE5166/ADE5169/ADE5566/ADE5569 I/O PORTS
PARALLEL I/O
The ADE5166/ADE5169/ADE5566/ADE5569 use three input/ output ports to exchange data with external devices. In addition to performing general-purpose I/O, some ports are capable of driving an LCD or performing alternate functions for the peripherals available on chip. In general, when a peripheral is enabled, the pins associated with it cannot be used as general-purpose I/Os. The I/O port can be configured through the SFRs listed in Table 160.
Table 160. I/O Port SFRs
SFR P0 P1 P2 EPCFG PINMAP0 PINMAP1 PINMAP2 Address 0x80 0x90 0xA0 0x9F 0xB2 0xB3 0xB4 Bit Addressable Yes Yes Yes No No No No Description Port 0 Port 1 Port 2 Extended port configuration Port 0 weak pull-up enable Port 1 weak pull-up enable Port 2 weak pull-up enable
Weak Internal Pull-Ups Enabled
A pin with weak internal pull-up enabled is used as an input by writing a 1 to the pin. The pin is pulled high by the internal pullup, and the pin is read using the circuitry shown in Figure 117. If the pin is driven low externally, it sources current because of the internal pull-up. A pin with internal pull-up enabled is used as an output by writing a 1 or a 0 to the pin to control the level of the output. If a 0 is written to the pin, it drives a logic low output voltage (VOL) and is capable of sinking 1.6 mA.
Open Drain (Weak Internal Pull-Ups Disabled)
When the weak internal pull-up on a pin is disabled, the pin becomes open drain. Use this open-drain pin as a high impedance input by writing a 1 to the pin. The pin is read using the circuitry shown in Figure 117. The open-drain option is preferable for inputs because it draws less current than the internal pull-ups that were enabled.
38 kHz Modulation
Each ADE5166/ADE5169/ADE5566/ADE5569 provides a 38 kHz modulation signal. The 38 kHz modulation is accomplished by internally XOR'ing the level written to the I/O pin with a 38 kHz square wave. Then, when a 0 is written to the I/O pin, it is modulated as shown in Figure 118.
LEVEL WRITTEN TO MOD38 38kHz MODULATION SIGNAL 38kHz MODULATED OUTPUT PIN
07411-091
The three bidirectional I/O ports have internal pull-ups that can be enabled or disabled individually for each pin. The internal pull-ups are enabled by default. Disabling an internal pull-up causes a pin to become open drain. Weak internal pull-ups are configured through the PINMAPx SFRs. Figure 117 shows a typical bit latch and I/O buffer for an I/O pin. The bit latch (one bit in the SFR of each port) is represented as a Type D flip-flop, which clocks in a value from the internal bus in response to a write-to-latch signal from the CPU. The Q output of the flip-flop is placed on the internal bus in response to a read latch signal from the CPU. The level of the port pin itself is placed on the internal bus in response to a read pin signal from the CPU. Some instructions that read a port activate the read latch signal, and others activate the read pin signal. See the Read-Modify-Write Instructions section for details.
DVDD
Figure 118. 38 kHz Modulation
Uses for this 38 kHz modulation include IR modulation of a UART transmit signal or a low power signal to drive an LED. The modulation can be enabled or disabled with the MOD38EN bit in the configuration SFR (CFG, Address 0xAF[4]). The 38 kHz modulation is available on eight pins, which are selected by the MOD38 bits in the extended port configuration SFR (EPCFG, Address 0x9F[7:0]).
READ LATCH INTERNAL BUS WRITE TO LATCH
ALTERNATE OUTPUT FUNCTION
INTERNAL PULL-UP CLOSED: PINMAPx.x = 0 OPEN: PINMAPx.x = 1 Px.x PIN
D
Q
CL Q LATCH
Figure 117. Port 0 Bit Latch and I/O Buffer
Rev. B | Page 147 of 156
07411-090
READ PIN
ALTERNATE INPUT FUNCTION
ADE5166/ADE5169/ADE5566/ADE5569
I/O REGISTERS
Table 161. Extended Port Configuration SFR (EPCFG, Address 0x9F)
Bit 7 6 5 4 3 2 1 0 Mnemonic MOD38_FP21 MOD38_FP22 MOD38_FP23 MOD38_TxD MOD38_CF1 MOD38_SSb MOD38_MISO MOD38_CF2 Default 0 0 0 0 0 0 0 0 Description This bit enables 38 kHz modulation on the P1.6/FP21 pin. This bit enables 38 kHz modulation on the P1.5/FP22 pin. This bit enables 38 kHz modulation on the P1.4/T2/FP23 pin. This bit enables 38 kHz modulation on the P1.1/TxD pin. This bit enables 38 kHz modulation on the P0.2/CF1 pin. This bit enables 38 kHz modulation on the P0.7/SS/T1/RxD2 pin. This bit enables 38 kHz modulation on the P0.5/MISO/ZX pin. This bit enables 38 kHz modulation on the P0.3/CF2 pin.
Table 162. Port 0 Weak Pull-Up Enable SFR (PINMAP0, Address 0xB2)
Bit 7 6 5 4 3 2 1 0 Mnemonic PINMAP0.7 PINMAP0.6 PINMAP0.5 PINMAP0.4 PINMAP0.3 PINMAP0.2 PINMAP0.1 PINMAP0.0 Default 0 0 0 0 0 0 0 0 Description The weak pull-up on P0.7 is disabled when this bit is set. The weak pull-up on P0.6 is disabled when this bit is set. The weak pull-up on P0.5 is disabled when this bit is set. The weak pull-up on P0.4 is disabled when this bit is set. The weak pull-up on P0.3 is disabled when this bit is set. The weak pull-up on P0.2 is disabled when this bit is set. The weak pull-up on P0.1 is disabled when this bit is set. The weak pull-up on P0.0 is disabled when this bit is set.
Table 163. Port 1 Weak Pull-Up Enable SFR (PINMAP1, Address 0xB3)
Bit 7 6 5 4 3 2 1 0 Mnemonic PINMAP1.7 PINMAP1.6 PINMAP1.5 PINMAP1.4 PINMAP1.3 PINMAP1.2 PINMAP1.1 PINMAP1.0 Default 0 0 0 0 0 0 0 0 Description The weak pull-up on P1.7 is disabled when this bit is set. The weak pull-up on P1.6 is disabled when this bit is set. The weak pull-up on P1.5 is disabled when this bit is set. The weak pull-up on P1.4 is disabled when this bit is set. The weak pull-up on P1.3 is disabled when this bit is set. The weak pull-up on P1.2 is disabled when this bit is set. The weak pull-up on P1.1 is disabled when this bit is set. The weak pull-up on P1.0 is disabled when this bit is set.
Table 164. Port 2 Weak Pull-Up Enable SFR (PINMAP2, Address 0xB4)
Bit [7:6] 5 4 3 2 1 0 Mnemonic Reserved PINMAP2.5 Reserved PINMAP2.3 PINMAP2.2 PINMAP2.1 PINMAP2.0 Default 0 0 0 0 0 0 0 Description Reserved. Should be left cleared. The weak pull-up on RESET is disabled when this bit is set. Reserved. Should be left cleared. Reserved. Should be left cleared. The weak pull-up on P2.2 is disabled when this bit is set. The weak pull-up on P2.1 is disabled when this bit is set. The weak pull-up on P2.0 is disabled when this bit is set.
Rev. B | Page 148 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 165. Port 0 SFR (P0, Address 0x80)
Bit 7 6 5 4 3 2 1 0
1
Bit Address 0x87 0x86 0x85 0x84 0x83 0x82 0x81 0x80
Mnemonic T1 T0 ZX CF2 CF1 INT1
Default 1 1 1 1 1 1 1 1
Description 1 This bit reflects the state of the P0.7/SS/T1/RxD2 pin. It can be written to or read. This bit reflects the state of the P0.6/SCLK/T0 pin. It can be written to or read. This bit reflects the state of the P0.5/MISO/ZX pin. It can be written to or read. This bit reflects the state of the P0.4/MOSI/SDATA pin. It can be written to or read. This bit reflects the state of the P0.3/CF2 pin. It can be written to or read. This bit reflects the state of the P0.2/CF1 pin. It can be written to or read. This bit reflects the state of the P0.1/FP19 pin. It can be written to or read. This bit reflects the state of the BCTRL/INT1/P0.0 pin. It can be written to or read.
When an alternate function is chosen for a pin of this port, the bit controlling this pin should always be set.
Table 166. Port 1 SFR (P1, Address 0x90)
Bit 7 6 5 4 3 2 1 0
1
Bit Address 0x97 0x96 0x95 0x94 0x93 0x92 0x91 0x90
Mnemonic
T2 T2EX ZX1 TxD RxD
Default 1 1 1 1 1 1 1 1
Description 1 This bit reflects the state of the P1.7/FP20 pin. It can be written to or read. This bit reflects the state of the P1.6/FP21 pin. It can be written to or read. This bit reflects the state of the P1.5/FP22 pin. It can be written to or read. This bit reflects the state of the P1.4/T2/FP23 pin. It can be written to or read. This bit reflects the state of the P1.3/T2EX/FP24 pin. It can be written to or read. This bit reflects the state of the P1.2/FP25/ZX pin. It can be written to or read. This bit reflects the state of the P1.1/TxD pin. It can be written to or read. This bit reflects the state of the P1.0/RxD pin. It can be written to or read.
When an alternate function is chosen for a pin of this port, the bit controlling this pin should always be set.
Table 167. Port 2 SFR (P2, Address 0xA0)
Bit [7:4] 3 2 1 0
1
Bit Address 0x97 to 0x94 0x93 0x92 0x91 0x90
Mnemonic P2.3 P2.2 P2.1 P2.0
Default 0x1F 1 1 1 1
Description 1 These bits are unused and should remain set. This bit reflects the state of the SDEN/P2.3/TxD2 pin. It can be written only. This bit reflects the state of the P2.2/FP16 pin. It can be written to or read. This bit reflects the state of the P2.1/FP17 pin. It can be written to or read. This bit reflects the state of the P2.0/FP18 pin. It can be written to or read.
When an alternate function is chosen for a pin of this port, the bit controlling this pin should always be set.
Rev. B | Page 149 of 156
ADE5166/ADE5169/ADE5566/ADE5569
Table 168. Port 0 Alternate Functions
Pin No. P0.0 Alternate Function BCTRL external battery control input INT1 external interrupt INT1 wake-up from PSM2 operating mode P0.1 P0.2 P0.3 P0.4 FP19 LCD segment pin CF1 ADE calibration frequency output CF2 ADE calibration frequency output MOSI SPI data line SDATA I2C data line P0.5 MISO SPI data line Zero-Crossing Detection 2 SCLK serial clock for I2C or SPI T0 Timer 0 input P0.7 SS SPI slave select input for SPI in slave mode SS SPI slave select output for SPI in master mode T1 Timer 1 input RxD2 receiver data input for UART2 RxD2 edge wake-up from PSM2 operating mode Alternate Function Enable Set INT1PRG = X01 in the interrupt pins configuration SFR (INTPR, Address 0xFF[3:1]). Set EX1 in the interrupt enable SFR (IE, Address 0xA8[2]). Set INT1PRG = 11X in the interrupt pins configuration SFR (INTPR, Address 0xFF[3:1]). Set FP19EN in the LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED[3]). Clear the DISCF1 bit in the ADE energy measurement internal MODE1 register (Address 0x0B[1]). Clear the DISCF2 bit in the ADE energy measurement internal MODE1 register (Address 0x0B[2]). Set the SCPS bit in the configuration SFR (CFG, Address 0xAF[5]), and set the SPIEN bit in SPI Configuration SFR 2 (SPIMOD2, Address 0xE9[6]). Clear the SCPS bit in the configuration SFR (CFG, Address 0xAF[5]), and set the I2CEN bit in the I2C mode SFR (I2CMOD, Address 0xE8[7]). Set the SCPS bit in the configuration SFR (CFG, Address 0xAF[5]), and set the SPIEN bit in SPI Configuration SFR 2 (SPIMOD2, Address 0xE9[6]). Set the ZX2 bit in the MODE3 energy measurement SFR (MODE3, Address 0x2B[0]). Set the I2CEN bit in the I2C mode SFR (I2CMOD, Address 0xE8[7]) or the SPIEN bit in SPI Configuration SFR 2 (SPIMOD2, Address 0xE9[6]) to enable the I2C or SPI interface. Set the C/T0 bit in the Timer/Counter 0 and Timer/Counter 1 mode SFR (TMOD, Address 0x89[2]) to enable T0 as an external event counter. Set the SS_EN bit in SPI Configuration SFR 1 (SPIMOD1, Address 0xE8[3]). Set the SPIMS_b bit in SPI Configuration SFR 2 (SPIMOD2, Address 0xE9[4]). Set the C/T1 bit in the Timer/Counter 0 and Timer/Counter 1 mode SFR (TMOD, Address 0x89[6]) to enable T1 as an external event counter. Set the REN2 bit in the Serial Communications Control 2 SFR (SCON2, Address 0xE1[2]). Set RXPROG bits = 11 in the peripheral configuration SFR (PERIPH, Address 0xF4[1:0]).
P0.6
Table 169. Port 1 Alternate Functions
Pin No. P1.0 P1.1 P1.2 P1.3 P1.4 Alternate Function RxD receiver data input for UART TxD transmitter data output for UART FP25 LCD segment pin Zero-Crossing Detection 1 FP24 LCD segment pin T2EX Timer 2 control input FP23 LCD segment pin T2 Timer 2 input FP22 LCD segment pin FP21 LCD segment pin FP20 LCD segment pin Alternate Function Enable Set the REN bit in the serial communications control SFR (SCON, Address 0x98[4]). This pin becomes TxD as soon as data is written into SBUF. Set the FP25EN bit in the LCD segment enable SFR (LCDSEGE, Address 0x97[7]). Set the ZX1 bit in the MODE3 energy measurement register (MODE3, Address 0x2B[1]). Set the FP24EN bit in the LCD segment enable SFR (LCDSEGE, Address 0x97[6]). Set the EXEN2 bit in the Timer/Counter 2 control SFR (T2CON, Address 0xC8[3]). Set the FP23EN bit in the LCD segment enable SFR (LCDSEGE, Address 0x97[5]). Set the C/T2 bit in the Timer/Counter 2 control SFR (T2CON, Address 0xC8[1]) to enable T2 as an external event counter. Set the FP22EN bit in the LCD segment enable SFR (LCDSEGE, Address 0x97[4]). Set the FP21EN bit in the LCD segment enable SFR (LCDSEGE, Address 0x97[3]). Set the FP20EN bit in the LCD segment enable SFR (LCDSEGE, Address 0x97[2]).
P1.5 P1.6 P1.7
Table 170. Port 2 Alternate Functions
Pin No. P2.0 P2.1 P2.2 P2.3 Alternate Function FP18 LCD segment pin FP17 LCD segment pin FP16 LCD segment pin SDEN serial download pin sampled on reset; P2.3 is an output only; TxD2 is the transmitter data output for UART2 Alternate Function Enable Set the FP18EN bit in the LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED[2]). Set the FP17EN bit in the LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED[1]). Set the FP16EN bit in the LCD Segment Enable 2 SFR (LCDSEGE2, Address 0xED[0]). Enabled by default. This pin becomes TxD2 as soon as data is written into SBUF2.
Rev. B | Page 150 of 156
ADE5166/ADE5169/ADE5566/ADE5569
PORT 0
Port 0 is controlled directly through the bit-addressable Port 0 SFR (P0, Address 0x80). The weak internal pull-ups for Port 0 are configured through the Port 0 weak pull-up enable SFR (PINMAP0, Address 0xB2); they are enabled by default. The weak internal pull-up is disabled by writing a 1 to PINMAP0[x]. Port 0 pins also have various secondary functions, as described in Table 168. The alternate functions of Port 0 pins can be activated only if the corresponding bit latch in the Port 0 SFR contains a 1. Port 1 pins also have various secondary functions, as described in Table 169. The alternate functions of Port 1 pins can be activated only if the corresponding bit latch in the Port 1 SFR contains a 1.
PORT 2
Port 2 is a 4-bit bidirectional port controlled directly through the bit-addressable Port 2 SFR (P2, Address 0xA0). Note that P2.3 can be used as an output only. Consequently, any read operation, such as a CPL P2.3, cannot be executed on this I/O. The weak internal pull-ups for Port 2 are configured through the Port 2 weak pull-up enable SFR (PINMAP2, Address 0xB4); they are enabled by default. The weak internal pull-up is disabled by writing a 1 to PINMAP2[x]. Port 2 pins also have various secondary functions, as described in Table 170. The alternate functions of Port 2 pins can be activated only if the corresponding bit latch in the Port 2 SFR contains a 1.
PORT 1
Port 1 is an 8-bit bidirectional port controlled directly through the bit-addressable Port 1 SFR (P1, Address 0x90). The weak internal pull-ups for Port 1 are configured through the Port 1 weak pull-up enable SFR (PINMAP1, Address 0xB3); they are enabled by default. The weak internal pull-up is disabled by writing a 1 to PINMAP1[x].
Rev. B | Page 151 of 156
ADE5166/ADE5169/ADE5566/ADE5569 DETERMINING THE VERSION OF THE ADE5166/ADE5169/ADE5566/ADE5569
Each ADE5166/ADE5169/ADE5566/ADE5569 holds in its internal flash registers a value that defines its version. This value helps to determine if users have the latest version of the part. The version of the ADE5166/ADE5169/ADE5566/ADE5569 that corresponds to this data sheet is ADE5166/ADE5169/ADE5566/ADE5569 V2.3. This value can be accessed as follows: 1. 2. 3. 4. Launch HyperTerminal with a 9600 baud rate. Put the part in serial download mode by first holding SDEN to logic low, then resetting the part. Hold the SDEN pin. Press and release the RESET pin.
A string should appear on the HyperTerminal containing the part name and version number, for example, ADE5166V2.3, ADE5169V2.3, ADE5566V2.3, or ADE5569V2.3.
Rev. B | Page 152 of 156
ADE5166/ADE5169/ADE5566/ADE5569 OUTLINE DIMENSIONS
0.75 0.60 0.45 1.60 MAX
1 PIN 1
12.20 12.00 SQ 11.80
64 49 48
TOP VIEW
(PINS DOWN)
10.20 10.00 SQ 9.80
1.45 1.40 1.35
0.15 0.05
SEATING PLANE
0.20 0.09 7 3.5 0
16 17 32
33
0.08 COPLANARITY
VIEW A
COMPLIANT TO JEDEC STANDARDS MS-026-BCD
Figure 119. 64-Lead Low Profile Quad Flat Package [LQFP] (ST-64-2) Dimensions shown in millimeters
ORDERING GUIDE
Model 1 ADE5166ASTZF62 2 ADE5166ASTZF62-RL2 ADE5169ASTZF622 ADE5169ASTZF62-RL2 ADE5566ASTZF622 ADE5566ASTZF62-RL2 ADE5569ASTZF622 ADE5569ASTZF62-RL2 ADE8052Z-PRG12 ADE8052Z-DWDL12 ADE8052Z-EMUL12 EVAL-ADE5169F62EBZ2 EVAL-ADE5569F62EBZ2
1 2
Antitamper Yes Yes Yes Yes No No No No
di/dt Sensor Interface No No Yes Yes No No Yes Yes
Var No No Yes Yes No No Yes Yes
Flash (kB) 62 62 62 62 62 62 62 62
Temperature Range -40C to +85C -40C to +85C -40C to +85C -40C to +85C -40C to +85C -40C to +85C -40C to +85C -40C to +85C
Package Description 64-Lead LQFP 64-Lead LQFP, 13" Tape & Reel 64-Lead LQFP 64-Lead LQFP, 13" Tape & Reel 64-Lead LQFP 64-Lead LQFP, 13" Tape & Reel 64-Lead LQFP 64-Lead LQFP, 13" Tape & Reel ADE Programmer ADE Downloader ADE Emulator Evaluation Board Evaluation Board
051706-A
ROTATED 90 CCW
VIEW A
0.50 BSC LEAD PITCH
0.27 0.22 0.17
Package Option ST-64-2 ST-64-2 ST-64-2 ST-64-2 ST-64-2 ST-64-2 ST-64-2 ST-64-2
All models have W + VA + rms, 5 V LCD, and RTC. Z = RoHS Compliant Part.
Rev. B | Page 153 of 156
ADE5166/ADE5169/ADE5566/ADE5569 NOTES
Rev. B | Page 154 of 156
ADE5166/ADE5169/ADE5566/ADE5569 NOTES
Rev. B | Page 155 of 156
ADE5166/ADE5169/ADE5566/ADE5569 NOTES
I2C refers to a communications protocol originally developed by Philips Semiconductors (now NXP Semiconductors).
(c)2008-2009 Analog Devices, Inc. All rights reserved. Trademarks and registered trademarks are the property of their respective owners. D07411-0-11/09(B)
Rev. B | Page 156 of 156


▲Up To Search▲   

 
Price & Availability of EVAL-ADE5569F62EBZ

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X